Количество питающихся заполняет неверно.
Всем доброе время суток! Я новичок. Есть дошкольное питание 2.0.
Столкнулся со следующей проблемой.
В программе есть подразделения питающихся ( 5 штук ).
На 2019 год если делать "заявку на питание" на 1 день по каждому подразделению, то в "Калькуляции" при выборе дня и нажатии на "Заполнить" общее количество и количество питающихся по категориям заполняет всё верно.
Но! Клиенту уже сейчас потребовалось создать заявки и калькуляции на 2020 год с новым типовым меню.
Создаём "Заявку на питание" На 13.01.2020 год с количеством людей 1 человек по одному подразделению. Делаем "Калькуляцию" на 13.01.2010 год. Жму заполнить.
И в итоге заполняет почему то по всем подразделениям и количество становится как в заявках на питание на 2019 год.
Cуть в том, что если и на 2019 год создать только "Заявку на питание" на одно подразделения, то он всё равно подставляет кол-во из всех подразделении!
Готов предоставить код или дт.
Склоняюсь к тому, что берёт СрезПоследних и вообще в принципе будущим числом нельзя делать "Заявки на питание". Но как обойти это и возможно ли вообще?
Столкнулся со следующей проблемой.
В программе есть подразделения питающихся ( 5 штук ).
На 2019 год если делать "заявку на питание" на 1 день по каждому подразделению, то в "Калькуляции" при выборе дня и нажатии на "Заполнить" общее количество и количество питающихся по категориям заполняет всё верно.
Но! Клиенту уже сейчас потребовалось создать заявки и калькуляции на 2020 год с новым типовым меню.
Создаём "Заявку на питание" На 13.01.2020 год с количеством людей 1 человек по одному подразделению. Делаем "Калькуляцию" на 13.01.2010 год. Жму заполнить.
И в итоге заполняет почему то по всем подразделениям и количество становится как в заявках на питание на 2019 год.
Cуть в том, что если и на 2019 год создать только "Заявку на питание" на одно подразделения, то он всё равно подставляет кол-во из всех подразделении!
Готов предоставить код или дт.
Склоняюсь к тому, что берёт СрезПоследних и вообще в принципе будущим числом нельзя делать "Заявки на питание". Но как обойти это и возможно ли вообще?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)Всё так и есть. Но подскажите как решить мою проблему ?
Процедура ЗаполнитьКоличествоКатегорииПитающихся(ДанныеРасчетов)
ИнициализироватьВременнуюТаблицу(ДанныеРасчетов, "КатегорииПитающихся");
ИнициализироватьВременнуюТаблицу(ДанныеРасчетов, "ПодразделенияВидаКалькуляции");
ИнициализироватьВременнуюТаблицу(ДанныеРасчетов, "ПолучателиВидаКалькуляции");
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = ДанныеРасчетов.МенеджерВременныхТаблиц;
Запрос.Текст = "ВЫБРАТЬ
| ДанныеЗаявки.Ссылка.Контрагент КАК Получатель,
| ДанныеЗаявки.КатегорияПитающихся,
| ДанныеЗаявки.Количество
|ПОМЕСТИТЬ ЧисленностьПитающихся
|ИЗ
| Документ.Питание_ЗаявкаНаПитание.ЧисленностьПоКатегориям КАК ДанныеЗаявки
|ГДЕ
| ДанныеЗаявки.Ссылка В
| (ВЫБРАТЬ
| АктуальнаяЗаявкаНаПитание.Регистратор КАК ЗаявкаНаПитание
| ИЗ
| РегистрСведений.Питание_АктуальнаяЗаявкаНаПитание.СрезПоследних(&Дата, Организация = &Организация
| И Подразделение В
| (ВЫБРАТЬ
| ПодразделенияВидаКалькуляции.Подразделение
| ИЗ
| ПодразделенияВидаКалькуляции КАК ПодразделенияВидаКалькуляции)
| И Контрагент В
| (ВЫБРАТЬ
| ПолучателиВидаКалькуляции.Получатель
| ИЗ
| ПолучателиВидаКалькуляции КАК ПолучателиВидаКалькуляции)) КАК АктуальнаяЗаявкаНаПитание)
| И ДанныеЗаявки.КатегорияПитающихся В
| (ВЫБРАТЬ
| КатегорииПитающихся.КатегорияПитающихся
| ИЗ
| КатегорииПитающихся)
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| КатегорииПитающихся.КатегорияПитающихся,
| КатегорииПитающихся.Получатель,
| ЕСТЬNULL(ЧисленностьПитающихся.Количество, 0) КАК Количество
|ПОМЕСТИТЬ КатегорииПитающихсяРегистр
|ИЗ
| КатегорииПитающихся КАК КатегорииПитающихся
| ЛЕВОЕ СОЕДИНЕНИЕ ЧисленностьПитающихся КАК ЧисленностьПитающихся
| ПО КатегорииПитающихся.КатегорияПитающихся = ЧисленностьПитающихся.КатегорияПитающихся
| И КатегорииПитающихся.Получатель = ЧисленностьПитающихся.Получатель
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|УНИЧТОЖИТЬ КатегорииПитающихся
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| КатегорииПитающихсяРегистр.КатегорияПитающихся,
| КатегорииПитающихсяРегистр.Получатель,
| СУММА(КатегорииПитающихсяРегистр.Количество) КАК Количество
|ПОМЕСТИТЬ КатегорииПитающихся
|ИЗ
| КатегорииПитающихсяРегистр КАК КатегорииПитающихсяРегистр
|
|СГРУППИРОВАТЬ ПО
| КатегорииПитающихсяРегистр.КатегорияПитающихся,
| КатегорииПитающихсяРегистр.Получатель";
// Численность по категориям определяем как численность на дату калькуляции
Запрос.УстановитьПараметр("Организация", Организация);
Если ДанныеРасчетов.ОпределятьЧисленностьПоТочнойДате Тогда
Запрос.УстановитьПараметр("Дата", Дата);
Иначе
Запрос.УстановитьПараметр("Дата", КонецДня(Дата));
КонецЕсли;
Запрос.Выполнить();
ДобавитьТаблицу(ДанныеРасчетов, "КатегорииПитающихся", Истина);
// Заполнение реквизита ОбщееЧислоПитающихся.
ЭтотОбъект.ОбщееЧислоПитающихся = 0;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = ДанныеРасчетов.МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| СУММА(КатегорииПитающихся.Количество) КАК Количество
|ИЗ
| КатегорииПитающихся КАК КатегорииПитающихся";
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ЭтотОбъект.ОбщееЧислоПитающихся = Выборка.Количество;
КонецЕсли;
КонецПроцедуры
Показать
(3)Из приведенного кода можно сказать, что численность он берет из регистратора Питание_АктуальнаяЗаявкаНаПитание.
Связи по подразделению в запросе нет и без структуры регистров/документов сложно сказать, возможно ли эту связь протянуть.
Что там во временных таблицах - осталось за кадром.
Связи по подразделению в запросе нет и без структуры регистров/документов сложно сказать, возможно ли эту связь протянуть.
Что там во временных таблицах - осталось за кадром.
(4) Да. Как раз таки в Питание_АктуальнаяЗаявкаНаПитание стоит 2 человека. Непонятно почему он суммирует по всем подразделениям старые кол-ва.
Про какую структуру регистров/документов вы говорите ?
ИнициализироватьВременнуюТаблицу(ДанныеРасчетов, "КатегорииПитающихся"); и ИнициализироватьВременнуюТаблицу(ДанныеРасчетов, "ПолучателиВидаКалькуляции");
он туда не попадает.
А в ИнициализироватьВременнуюТаблицу(ДанныеРасчетов, "ПодразделенияВидаКалькуляции");
попадает(в условие ИначеЕсли ИмяТаблицы = "ПодразделенияВидаКалькуляции" Тогда
) :
Про какую структуру регистров/документов вы говорите ?
ИнициализироватьВременнуюТаблицу(ДанныеРасчетов, "КатегорииПитающихся"); и ИнициализироватьВременнуюТаблицу(ДанныеРасчетов, "ПолучателиВидаКалькуляции");
он туда не попадает.
А в ИнициализироватьВременнуюТаблицу(ДанныеРасчетов, "ПодразделенияВидаКалькуляции");
попадает(в условие ИначеЕсли ИмяТаблицы = "ПодразделенияВидаКалькуляции" Тогда
) :
Процедура ИнициализироватьВременнуюТаблицу(ДанныеРасчетов, ИмяТаблицы)
Если ДанныеРасчетов.СуществующиеВременныеТаблицы.Найти(ИмяТаблицы) <> Неопределено Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = ДанныеРасчетов.МенеджерВременныхТаблиц;
Если ИмяТаблицы = "КатегорииПитающихсяВидаКалькуляции" Тогда
Запрос.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("ВЫБРАТЬ
| Питание_ВидыКалькуляцийКатегорииПитающихся.КатегорияПитающихся
|ПОМЕСТИТЬ КатегорииПитающихсяВидаКалькуляцииБезДопЗаполнения
|ИЗ
| Справочник.Питание_ВидыКалькуляций.КатегорииПитающихся КАК Питание_ВидыКалькуляцийКатегорииПитающихся
|ГДЕ
| Питание_ВидыКалькуляцийКатегорииПитающихся.Ссылка = &ВидКалькуляции
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| КатегорииПитающихсяВидаКалькуляцииБезДопЗаполнения.КатегорияПитающихся КАК КатегорияПитающихся
|ПОМЕСТИТЬ КатегорииПитающихсяВидаКалькуляции
|ИЗ
| КатегорииПитающихсяВидаКалькуляцииБезДопЗаполнения КАК КатегорииПитающихсяВидаКалькуляцииБезДопЗаполнения
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Питание_КатегорииПитающихся.Ссылка
|ИЗ
| Справочник.Питание_КатегорииПитающихся КАК Питание_КатегорииПитающихся
|ГДЕ
| 0 В
| (ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ КатегорииПитающихсяВидаКалькуляцииБезДопЗаполнения.КатегорияПитающихся) КАК КатегорияПитающихся
| ИЗ
| КатегорииПитающихсяВидаКалькуляцииБезДопЗаполнения КАК КатегорииПитающихсяВидаКалькуляцииБезДопЗаполнения)", ИмяТаблицы);
Запрос.УстановитьПараметр("ВидКалькуляции", ВидКалькуляции);
ИначеЕсли ИмяТаблицы = "ПодразделенияВидаКалькуляции" Тогда
Запрос.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("ВЫБРАТЬ
| Питание_ВидыКалькуляцийПодразделения.Подразделение
|ПОМЕСТИТЬ ПодразделенияВидаКалькуляцииБезДопЗаполнения
|ИЗ
| Справочник.Питание_ВидыКалькуляций.Подразделения КАК Питание_ВидыКалькуляцийПодразделения
|ГДЕ
| Питание_ВидыКалькуляцийПодразделения.Ссылка = &ВидКалькуляции
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ПодразделенияВидаКалькуляцииБезДопЗаполнения.Подразделение КАК Подразделение
|ПОМЕСТИТЬ ПодразделенияВидаКалькуляции
|ИЗ
| ПодразделенияВидаКалькуляцииБезДопЗаполнения КАК ПодразделенияВидаКалькуляцииБезДопЗаполнения
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Питание_Подразделения.Ссылка
|ИЗ
| Справочник.Питание_Подразделения КАК Питание_Подразделения
|ГДЕ
| 0 В
| (ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПодразделенияВидаКалькуляцииБезДопЗаполнения.Подразделение) КАК Подразделение
| ИЗ
| ПодразделенияВидаКалькуляцииБезДопЗаполнения КАК ПодразделенияВидаКалькуляцииБезДопЗаполнения)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗНАЧЕНИЕ(Справочник.Питание_Подразделения.ПустаяСсылка)
|ГДЕ
| 0 В
| (ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПодразделенияВидаКалькуляцииБезДопЗаполнения.Подразделение) КАК Подразделение
| ИЗ
| ПодразделенияВидаКалькуляцииБезДопЗаполнения КАК ПодразделенияВидаКалькуляцииБезДопЗаполнения)", ИмяТаблицы);
Запрос.УстановитьПараметр("ВидКалькуляции", ВидКалькуляции);
ИначеЕсли ИмяТаблицы = "ПолучателиВидаКалькуляции" Тогда
Запрос.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("ВЫБРАТЬ
| Питание_ВидыКалькуляцийПолучатели.Получатель
|ПОМЕСТИТЬ ПолучателиВидаКалькуляцииБезДопЗаполнения
|ИЗ
| Справочник.Питание_ВидыКалькуляций.Получатели КАК Питание_ВидыКалькуляцийПолучатели
|ГДЕ
| Питание_ВидыКалькуляцийПолучатели.Ссылка = &ВидКалькуляции
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ПолучателиВидаКалькуляцииБезДопЗаполнения.Получатель КАК Получатель
|ПОМЕСТИТЬ ПолучателиВидаКалькуляции
|ИЗ
| ПолучателиВидаКалькуляцииБезДопЗаполнения КАК ПолучателиВидаКалькуляцииБезДопЗаполнения
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Питание_Получатели.Ссылка
|ИЗ
| Справочник.Питание_Получатели КАК Питание_Получатели
|ГДЕ
| 0 В
| (ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПолучателиВидаКалькуляцииБезДопЗаполнения.Получатель) КАК Получатель
| ИЗ
| ПолучателиВидаКалькуляцииБезДопЗаполнения КАК ПолучателиВидаКалькуляцииБезДопЗаполнения)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗНАЧЕНИЕ(Справочник.Питание_Получатели.ПустаяСсылка)
|ГДЕ
| 0 В
| (ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПолучателиВидаКалькуляцииБезДопЗаполнения.Получатель) КАК Получатель
| ИЗ
| ПолучателиВидаКалькуляцииБезДопЗаполнения КАК ПолучателиВидаКалькуляцииБезДопЗаполнения)", ИмяТаблицы);
Запрос.УстановитьПараметр("ВидКалькуляции", ВидКалькуляции);
Иначе
Запрос.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("ВЫБРАТЬ
| ТаблицаДанных.*
|ПОМЕСТИТЬ %1
|ИЗ
| &Таблица КАК ТаблицаДанных", ИмяТаблицы);
Запрос.УстановитьПараметр("Таблица", ЭтотОбъект[ИмяТаблицы].Выгрузить());
КонецЕсли;
Запрос.Выполнить();
ДанныеРасчетов.СуществующиеВременныеТаблицы.Добавить(ИмяТаблицы);
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот