Vofka @ Сегодня, 12:22
, Ну я думаю можно поймать по моменту времени. Но запросом я не знаю как это сделать, хотя особо и не копал. Просто интересно стало, думал может Вы знаете.
Появилась необходимость раздельного начисления и выплата з/п в упр. и регл. учете. Но проблема в том, что эти галочки недоступны для изменения в документах. Они выставляются автоматически при выборе организации и зависят от настроек учетной политики по персоналу. Т.е. как установлено в регистре сведений "Учетная политика по персоналу" в каком учете отражать з/п для конкретной организации, так эти галочки и будут устанавливаться в документах. И я так понимаю это сделано не просто так.
Вопрос: Какие негативные последствия будут если я в конфигурации сделаю доступным установку и снятие этих галочек в документах?
Я пока посмотрю по коду. Но может кто-то сразу скажет, что этого делать нельзя или можно, и опишет причины.
Причем после изменения суммы вручную если отслеживать в конфигугаторе Процедура ТоварыСуммаПриИзменении(Элемент) то Значение ЭлементыФормы.Товары.ТекущиеДанные.Сумма равна той что внесли вручную, а в форме она остаетса без изменений.
Это как? Сумма после изменения возвращает предыдущее значение?
Sirius83 @ Сегодня, 12:40
, Пройдитесь отладчиком по процедуре ТоварыПриОкончанииРедактирования, а точнее по функции РассчитыватьАвтоматическиеСкидки, и поймете что к чему.
Запрос вставить в скд, программно сформировать его выполнение в табличный документ а табличный документ сохранить через метод
Не совсем понял Ваш метод. Можно подробнее?
Я использую во внешней обработке "Конструктор запроса с обработкой результата" и на первой вкладке выбираю Тип обработки "Вывод в табличный документ". Потом, если нужно, корректирую и
Constantus @ Вчера, 10:46
, Когдато на УТП делал запрос по получению остатков за период на каждый день с использованием производственного календаря:
ВЫБРАТЬ НАЧАЛОПЕРИОДА(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, ДЕНЬ) КАК Период ПОМЕСТИТЬ ПериодПоДням ИЗ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь ГДЕ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ДатаНач И &ДатаКон ;
//////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПериодПоДням.Период КАК Период, ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток, ТоварыНаСкладахОстатки.Склад ПОМЕСТИТЬ НачальныйОстатокПоДням ИЗ ПериодПоДням КАК ПериодПоДням, РегистрНакопления.ТоварыНаСкладах.Остатки( &ДатаНач, Номенклатура.НоменклатурнаяГруппа В ИЕРАРХИИ (&ТорговыеМарки) И Склад В (&Склады)) КАК ТоварыНаСкладахОстатки
СГРУППИРОВАТЬ ПО ПериодПоДням.Период, ТоварыНаСкладахОстатки.Номенклатура, ТоварыНаСкладахОстатки.Склад
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ ПериодПоДням.Период, ТоварыНаСкладахОбороты.Номенклатура, СУММА(0), ТоварыНаСкладахОбороты.Склад ИЗ ПериодПоДням КАК ПериодПоДням, РегистрНакопления.ТоварыНаСкладах.Обороты( &ДатаНач, &ДатаКон, , Номенклатура.НоменклатурнаяГруппа В ИЕРАРХИИ (&ТорговыеМарки) И Склад В (&Склады)) КАК ТоварыНаСкладахОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки( &ДатаНач, Номенклатура.НоменклатурнаяГруппа В ИЕРАРХИИ (&ТорговыеМарки) И Склад В (&Склады)) КАК ТоварыНаСкладахОстатки ПО ТоварыНаСкладахОбороты.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура И ТоварыНаСкладахОбороты.Склад = ТоварыНаСкладахОстатки.Склад ГДЕ ТоварыНаСкладахОстатки.Номенклатура ЕСТЬ NULL
СГРУППИРОВАТЬ ПО ПериодПоДням.Период, ТоварыНаСкладахОбороты.Номенклатура, ТоварыНаСкладахОбороты.Склад ;
//////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТоварыНаСкладахОбороты.Период, ТоварыНаСкладахОбороты.Номенклатура, СУММА(ТоварыНаСкладахОбороты.КоличествоОборот) КАК КоличествоОборот, ТоварыНаСкладахОбороты.Склад ПОМЕСТИТЬ ОборотыЗаПериод ИЗ РегистрНакопления.ТоварыНаСкладах.Обороты( &ДатаНач, &ДатаКон, День, Номенклатура.НоменклатурнаяГруппа В ИЕРАРХИИ (&ТорговыеМарки) И Склад В (&Склады)) КАК ТоварыНаСкладахОбороты
СГРУППИРОВАТЬ ПО ТоварыНаСкладахОбороты.Номенклатура, ТоварыНаСкладахОбороты.Период, ТоварыНаСкладахОбороты.Склад ;
//////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ НачальныйОстатокПоДням.Период КАК Период, НачальныйОстатокПоДням.Номенклатура КАК Номенклатура, МАКСИМУМ(НачальныйОстатокПоДням.КоличествоОстаток) КАК КоличествоОстаток, СУММА(ОборотыЗаПериод.КоличествоОборот) КАК КоличествоОборот, НачальныйОстатокПоДням.Склад ПОМЕСТИТЬ ОстаткиИОбороты ИЗ НачальныйОстатокПоДням КАК НачальныйОстатокПоДням ЛЕВОЕ СОЕДИНЕНИЕ ОборотыЗаПериод КАК ОборотыЗаПериод ПО НачальныйОстатокПоДням.Номенклатура = ОборотыЗаПериод.Номенклатура И (ОборотыЗаПериод.Период МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНач, ДЕНЬ) И КОНЕЦПЕРИОДА(НачальныйОстатокПоДням.Период, ДЕНЬ)) И НачальныйОстатокПоДням.Склад = ОборотыЗаПериод.Склад
СГРУППИРОВАТЬ ПО НачальныйОстатокПоДням.Период, НачальныйОстатокПоДням.Номенклатура, НачальныйОстатокПоДням.Склад ;
//////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ОстаткиИОбороты.Период КАК Период, ОстаткиИОбороты.Номенклатура КАК Номенклатура, СУММА(ОстаткиИОбороты.КоличествоОстаток + ЕСТЬNULL(ОстаткиИОбороты.КоличествоОборот, 0)) КАК Остаток ИЗ ОстаткиИОбороты КАК ОстаткиИОбороты
СГРУППИРОВАТЬ ПО ОстаткиИОбороты.Номенклатура, ОстаткиИОбороты.Период
sovuhkamoy @ 20.02.19, 12:49
, Запустите базу через конфигуратор (при запуске нужно выбрать "Конфигуратор" вместо "1С:Предприятие"). Далее Администрирование - Пользователи. Нужно добавить пользователя (т.е. Вас). Нажимаете на плюсик, на закладке "Основные" указываете имя, полное имя, указываете пароль если нужно, на заклодке "Прочее" ставите галочку "Полные права". Закрываете конфигуратор. Запускаете 1С как обычно.
Constantus @ Сегодня, 13:38
, Если конфигурация самописная, то как вариант, изменить форму. Сделать чтобы форма состояла полностью из вкладок. Первая вкладка это шапка документа, вторая и т.д. это табличные части документа.
Это удалил и заново развернул средствами ОС? Тогда добро пожаловать в мир блокировок.
А можно подробней? Мня эта тема тоже интересует, т.к. столкнулся с блокировками после перехода с 8.2 на 8.3. А точнее, иногда выполнение запроса к регистру сведений зависает и в следствии чего идут блокировки.
Предыстория. Где-то полгода назад обновил платформу с 8.2.19.130 на 8.3.8.2442. Сразу же на следующий день во многих пользователей и очень часто посыпались ошибки на превышение времени ожидания блокировки. Тогда я причину не выявил, т.к. не особо располагал временем, а пользователи очень сильно жаловались. Я даже здесь тему создавал, но и это не помогло. В общем, откатил платформу обратно на 8.2 и проблема исчезла.
Теперь же опять обновил платформу, но уже на 8.3.10.2650 и проблема опять возникла. Что я выяснил.
В 4 утра запускается регламентное задание, которое запускает обработку, которая формирует и проводит в цыкле документы "Отчет о розничных продажах". Документов всегда должно быть 37 (равно количеству складов), строк в документе в среднем 250. После перехода на 8.3 регламентное задание стало зависать, а точнее после проведения нескольких документов следующий зависает. Это мог быть по счету 5 или 7 или 10 - какой-то закономерности не выявил. Если потом запустить его проведение - проводится без проблем. При выполнении этого регламентного задания ни пользователи ни другие регламентные задания в базе не работают.
Еще точнее выяснил, что зависает выполнение запроса к регистру сведений. Запрос базовый. Вот код:
Функция СформироватьЗапросПоПродажнымЦенам(ДатаЦен, СписокСкладов, СписокНоменклатуры) Экспорт
Запрос = Новый Запрос; Запрос.УстановитьПараметр("Дата", ДатаЦен); Запрос.УстановитьПараметр("СписокСкладов", СписокСкладов); Запрос.УстановитьПараметр("СписокНоменклатуры", СписокНоменклатуры);
ТекстЗапроса = " |ВЫБРАТЬ | ЦеныПродажные.Склад КАК Склад, | ЦеныПродажные.Номенклатура КАК Номенклатура, | ЦеныПродажные.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | ЦеныПродажные.Цена КАК Цена |ИЗ | РегистрСведений.ЦеныАТТ.СрезПоследних(&Дата, Склад В (&СписокСкладов) | И Номенклатура В (&СписокНоменклатуры)) КАК ЦеныПродажные |";
Обычно запрос выполняется в течении 10 сек. Но бывает что выполнение запроса зависает и может висеть бесконечно, пока не удалишь сеанс. Мало того, что регламентное задание не завершается, так из-за того что зависло выполнение запроса то записи регистра сведений заблокированы (возможно что даже все) и другие пользователи становятся жертвами блокировки и практически не могут работать. Запускал обработку вручную от имени других пользователей - результат тот же.
Далее выяснил, что в параметр "СписокСкладов" передается массив, который выгружается из таблицы значений. Эта таблица значений содержит перечень номенклатуры и других данных документа. Т.е. в массив попадает один склад, но он повторяется столько раз, сколько строк в документе, а это в среднем 250. Почему разработчик так написал код мне непонятно. Изменил базовый код. Теперь перед выгрузкой в массив копирую таблицу значений по колонке "Склад" и потом по ей же и сворачиваю. Т.е. теперь склад в массиве не повторяется.
Проблема вроде как ушла, во всяком случае несколько дней "полет нормальный". Но мне может кто-то объяснить, что это было? Я понимаю,что в регистре записей довольно много, и складов довольно много (37), и в массиве один и тот же склад повторялся 250 раз потом передавался в запрос как параметр. Но все же...? Причем на 8.2 все работало без проблем.
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!