Программы "Простой софт" www.prostoysoft.ru

ВНИМАНИЕ! РЕКЛАМНЫЕ СООБЩЕНИЯ И ГИПЕРССЫЛКИ В ФОРУМЕ ЗАПРЕЩЕНЫ (посты удаляются автоматически)
Текущее время: 27.11.2024 13:46

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
СообщениеДобавлено: 01.08.2018 18:42 
Не в сети

Зарегистрирован: 28.04.2017 21:30
Сообщения: 36
Рассмотрим на примере демо базы. Беда приходит когда к примеру меняю склад в дублированных "Продажах/Поступлениях/ Перемещениях" и количество этих товаров в tblMain меняется только если кликать мышью на каждый отдельно. Знаю что стоит триггер
Код:
UPDATE tblMain SET Store1Quantity = (select QuantityCalc from qdfStoresState where ProductID = <ProductID> AND StoreIDCalc = 1) WHERE ID = <ProductID>;
UPDATE tblMain SET Store2Quantity = (select QuantityCalc from qdfStoresState where ProductID = <ProductID> AND StoreIDCalc = 2) WHERE ID = <ProductID>;
Но он работает если менять по одному товару (<ProductID>).
Нужна помощь сделать так, что бы обновлялись все позиции в "Поступлении/продажи/перемещении".

Кстати заметил что остатки встают на место при клике из за триггера с командой FillOnStoreFields. Не понимаю как это устроено но может можно применить эту команду больше чем на одну строку?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02.08.2018 12:00 
Не в сети

Зарегистрирован: 25.04.2012 10:09
Сообщения: 2233
Откуда: Жуковский, Московская область
Антон92 писал(а):
Кстати заметил что остатки встают на место при клике из за триггера с командой FillOnStoreFields. Не понимаю как это устроено
Внутренняя команда, автоматически заполняющая остатки товаров на складах в полях с вн. именами типа StoreXQuantity в т.Товары и представлениях на ее основе

Создайте для основной т.Продажи/Поступления/Перемещения тип триггера "VBScript для всех" на сработку после изменения поля с кодом склада, задайте условие отбора (в поле "Условие"), чтобы остались лишь товары в данной Продаже/Поступлении/Перемещении (типа SELECT * FROM tblSalesProducts WHERE SaleID = <ID>). Пропишите тот же запрос, но уже в команде ExecuteSQL триггера, в конце добавьте команду (возможно, потребуется предварительно вставить задержку, напр. Delay 1) на обновление подчиненной таблицы с товарами. И остатки будут обновляться для всех товаров разом как в справочнике Товары, так и в самой Продаже/Поступлении/Перемещении.

_________________
90% ответов на ваши вопросы находятся в руководстве, разделах "Вопросы" и "Видео" на нашем сайте.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03.08.2018 18:42 
Не в сети
Администратор

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
Правый клик на заголовке поля -> Установить значение для всего поля.
В появившейся форме вбейте <DefaultValue>

Ну, а в Значении по умолчанию в свойствах поля у вас должна быть указана команда FillOnStoreFields или ваша длинная SQL-инструкция.

_________________
2B OR NOT 2B = TRUE


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10.09.2018 15:42 
Не в сети

Зарегистрирован: 28.04.2017 21:30
Сообщения: 36
Спасибо! В большинстве случаев ошибки исправил.
Но сегодня заметил проблему с подчиненной таблицей "Проданные товары". По идее в каждой будет такая история.
Добавил товар в продажу, ОК, все изменения учтены.
Но если после этого отредактировать "Код товара", пересчитается количество нового кода, а у старого то нет! И опять пока не кликнешь на него в "Товарах", количество не изменит.
Выборку на "бывший" код ведь никак не сделать...
Как быть?

Кстати отсюда ещё вопрос. Я бы проще закрыл повторное изменение поля "Код товара".
Возможно закрыть для изменений отдельное поле при условии?
(Здесь "условия по умолчанию" и "правила на значения" не вышло настроить)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10.09.2018 15:57 
Не в сети

Зарегистрирован: 25.04.2012 10:09
Сообщения: 2233
Откуда: Жуковский, Московская область
Антон92 писал(а):
Выборку на "бывший" код ведь никак не сделать...
Как быть?
Используйте фигурные скобки для получения значения поля до изменения: {ProductID}
Антон92 писал(а):
Возможно закрыть для изменений отдельное поле при условии?
Да, используйте в триггере типа "при изменении записи" команду DisableFields "ProductID" для запрета изменения кода ProductID товара

Все это есть в руководстве, здесь то же самое повторять не принято, изучайте.

_________________
90% ответов на ваши вопросы находятся в руководстве, разделах "Вопросы" и "Видео" на нашем сайте.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 12.09.2018 14:18 
Не в сети

Зарегистрирован: 28.04.2017 21:30
Сообщения: 36
Ivan писал(а):
Правый клик на заголовке поля -> Установить значение для всего поля.
В появившейся форме вбейте <DefaultValue>

Ну, а в Значении по умолчанию в свойствах поля у вас должна быть указана команда FillOnStoreFields или ваша длинная SQL-инструкция.


FillOnStoreFields по умолчанию превращает всё в нули. В чём может быть проблема? сейчас бы очень пригодилось пересчитать всё количество не перещелкивая каждый товар

ps. Вставил длинную sql инструкцию на каждое поле каждого склада. Долго, но работает. И так на три склада пересчитывать три раза придётся...
А FillOnStoreFields по родному триггеру за одно перемещение работает сразу на все склады


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13.09.2018 02:14 
Не в сети

Зарегистрирован: 25.04.2012 10:09
Сообщения: 2233
Откуда: Жуковский, Московская область
А предложенный мною вариант быстро и стабильно работает тем временем (видео не редактировалось)...


Вложения:
Автообновление остатков товаров в справочнике1.gif
Автообновление остатков товаров в справочнике1.gif [ 1.99 МБ | Просмотров: 26899 ]

_________________
90% ответов на ваши вопросы находятся в руководстве, разделах "Вопросы" и "Видео" на нашем сайте.
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB