Есть документ ПериодическиеСписания (реквизиты: Сумма, Получатель, Отправитель)
Мне нужно, чтобы при создании или редактировании документа, при выборе даты, открывалась форма выбора, содержащая все документы на выбранное число.
При изменении даты открываю форму выбора, но она содержит все документы.
Как ограничить форму нужными данными?
И как при выборе документа, перенести его данные в поля формы документа?
Если можно, попонятнее, чтоб мне как новичку было проще разобраться. Читал книжку Радченко, но разобраться как это сделать не смог. Помогите пожалуйста.
Процедура ДатаПриИзменении(Элемент)
Форма = ПолучитьФорму("Документ.ПериодическиеСписания.ФормаВыбора",,ЭтаФорма);
Форма.Открыть();
КонецПроцедуры
(1)Если Форма Выбора у вас на основе динамического списка, то у списка есть реквизит - отбор. Вот в него и передайте отбор по дате в списке
ДатаОтбора = Элемент.Значение;
Отбор = Новый Структура;
Отбор.Вставить("Дата", ДатаОтбора );
Форма = ПолучитьФорму("Документ.ПериодическиеСписания.ФормаВыбора",Отбор,ЭтаФорма);
При создании формы выбора в параметрах будет отборПоДата, с датой, ее и используйте для отбора
Что то типа
в процедуре присозданиинасервере
Если Параметры.Отбор.Свойство("Дата") Тогда
ОтборПодате = Параметры.Отбор.ДатаОтбора;
КонецЕсли;
Примерно так.
Код не проверял, писал по памяти, но надеюсь мысль понятна
(6)Ну да, посмотрите в отладчике чему равен Элемент формы дата при изменении
ЗЫ я же говорю, код писал с памяти, без проверки в 1С, мог где то напутать... Я Вам показал путь...
Что то типа ДотаОтбора = Объект.Дата
Это если Дата реквизит объекта.
(7)
Попробовал написать вот-так
ДатаОтбора = ЭтаФорма.Объект.Дата;
в ДатаОтбора в отладчике теперь записывается дата, которую я выбрал, но после этого форма выбора не открывается
Примера под рукой нет, при открытии формы можно наложить отбор (в типовых пример есть, или гуглиться), при выборе элемента есть получить результат подбора
(10)
ну может быть я неправильно понял как это сделать, а задача была приблизительно в следующем:
При наличии нескольких проведенных документов в 1 день, давать пользователю возможность выбрать одну из них
ну может быть я неправильно понял как это сделать, а задача была приблизительно в следующем:
При наличии нескольких проведенных документов в 1 день, давать пользователю возможность выбрать одну из них
Смотри типовые, там это повсюду, не надо велосипед изобретать, это вполне нормально когда например подбираем документ взаиморасчетов или заказ с отбором по контрагенту или договору
Я просто подумал, что надо реализовывать это так, хотя была еще идея создать на форме табличную часть, в которой будут записаны проведенные документы на выбранную дату. Ну и сделать, чтобы табличная часть становилась видимая при наличии больше 1 документа. Но я подумал, что это сделать сложнее, чем с формой выбора, поэтому решил пробовать через форму выбора. Через табличную часть думал тоже попробовать для саморазвития, но позже.
(12) а общий-то смысл какой? Создать новый документ, заполнить его на основании уже существующего, что-то подкорректировать и записать? Это и есть типовой метод "ввод на основании"
(13)
Постараюсь объяснить:
У меня есть Кошельки, у них есть периодические поступления и расходы. Например, каждый месяц 10 числа, на конкретный кошелек поступает конкретная сумма денег (или списывается). Сумму документа можно изменять с периодичностью в пределах месяца. При наличии нескольких списаний (поступлений) в одну дату нужно давать пользователю выбор.
Может быть для системы такое, впринципе, делать не надо, но поскольку я только учусь, выполняю такое задание, чтоб научиться работать с подобными вещами.
Надеюсь, что смог объяснить более понятно.
(15) Насколько помню, под это дело у тебя был назначен периодический регистр сведений. Т.е. планировал получать последнее изменение. Т.е. выбор не подразумевался и данные можно было непосредственно из регистра брать. А эта задача, вроде, конфликтует с созданным..
ну если для обучения, то лучше все таки сделай отдельную кнопку "Заполнить из документа", а не при изменении даты или ещё каких-то реквизитов, т.к. в принципе это не связанные объекты. А дальше нужно смотреть какой у тебя интерфейс, обычный или управляемый. Там методы разные. Пока форму-то с отбором ты откроешь, но дальнейшей обработки у тебя нигде нет
Пока форму-то с отбором ты откроешь, но дальнейшей обработки у тебя нигде нет
Ну это да, это я думал делать после того, как, хотя бы, смогу отобрать нужные значения.
А дальше нужно смотреть какой у тебя интерфейс, обычный или управляемый.
Интерфейс управляемый
то лучше все таки сделай отдельную кнопку "Заполнить из документа", а не при изменении даты или ещё каких-то реквизитов
Ну можно сделать и так, только мне надо, чтобы выбор зависел от даты, например при открытии документа 5 числа, при нажатии на кнопку, я должен видеть только документы проведенные 5 числа.
я должен видеть только документы проведенные 5 числа
Пятого числа любого месяца? Тут скорее всего обычным отбором не отделаешься, либо перед открытием придется формировать список всех дат с этим числом, а т.к. в принципе это бесконечный ряд, то решение не айс. Я бы сделал отдельную форму выбора с динамическим списком,в который в качестве параметра передается нужный день месяца. Параметр передавать через дополнительные параметры формы.
Что-то я опять делаю не так.
Пробовал в начале в форме выбора так как посоветовали в (5) посте, но не понял зачем ОтборПоДате, где его дальше использовать.
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Отбор.Свойство("Дата") Тогда
ОтборПоДате = Параметры.Отбор.ДатаОтбора;
КонецЕсли;
КонецПроцедуры
Вот, например, про передачу параметров в форму:
https://infostart.ru/public/86853 Ещё раз упомяну, что таким образом (21) у тебя будет отбор по конкретной дате, а не числу месяца
(23) Ну у тебя вид сравнения "ВидСравненияКомпоновкиДанных.Равно", так что логично. А ты, похоже, хочешь "ВидСравнения.Интервал" использовать. Только настраиваешь как-то странно
Форме документа нужно обработать событие ОбработкаВыбора.
1. Вызываешь форму выбора
2. Выбираешь, оповещаешь о выборе форму документа через ОповеститьОВыборе(ЗначениеВыбора)
3. Перехватываешь это значение в событии формы документа ОбработкаВыбора
Наверное так. Могу ошибаться - давно не писал на УФ, на работе все на обычных.
Верни структуру. А учитывая, что у тебя приемник и источник одного типа, используй "ЗаполнитьЗначениеСвойств(Объект, ВыбранноеЗначение)"
И не надо "ЭтоФорма.Объект" использовать, обычно просто "Объект" достаточно, скорее всего и просто имени реквизита у тебя хватит
В качестве объекта должна быть коллекция значений, в данном случае сам документ - "ДокументОбъект.ПериодическиеСписания", т.е. в твоем случае просто "Объект"
на форме документа решил сделать так, что при изменении даты, открывается форма с документами, проведенными в этот день (т.е. просто вместо кнопки пересунул на Датаприизменении)
Возникла проблема с Закрыть
Процедура при изменении даты:
В этой же форме процедура ОписаниеЗакрытия, которая используется в ОписаниеОповещения, не могу понять, что в ней надо писать и какие параметры указывать?
&НаКлиенте
Процедура ОписаниеЗакрытия(Результат,Параметры) Экспорт
Если ТипЗнч(Результат) = Тип("Структура") Тогда
Результат = Результат.Значение;
КонецЕсли;
КонецПроцедуры
Сделал не так, как хотел изначально (т.к. понял, что это не совсем правильно) Объясню работу сначала,
Есть документы РасходДенежныхСредств, ПериодическиеСписания и регистр сведений ПериодическийРасход (в пределах месяца).
Мне нужно, чтобы при создании (редактировании) документов РасходДенежныхСредств, при изменении даты открывалось окно выбора проведенных документов ПериодическиеСписания и при выборе строки, ее данные вносились в форму создания (редактирования) документа РасходДенежныхСредств.
Я сделал все это, только без регистра сведений. При изменении даты открывается форма выбора документа ПериодическиеСписания, выбираю оттуда строку и ее данные вбиваются в форму документа.
Мне надо сделать тоже самое только с регистром сведений, т.к. если много документов не проведено, программа будет перебирать все документы, думаю так делать не разумно.
Не получается это сделать с регистром сведений, т.к. там открывается та же форма списка, только с отбором по дате.
Короче говоря, мне надо, чтобы при изменении даты выводилась не стандартная форма списка регистра, а измененная (оставить только 3 колонки) и в отдельном окне
Я думаю, что мне надо создать форму выбора у самого документа РасходДенежныхСредств и в событии присоздании заполнить его данными из регистра сведений. Правильно так будет сделать?
Я думаю, что мне надо создать форму выбора у самого документа РасходДенежныхСредств и в событии присоздании заполнить его данными из регистра сведений. Правильно так будет сделать?
Правильнее эту форму регистру сведений сделать и вызывать её, а не стандартную
(47) Я бы тогда не так делал. В форме выбора убрал список записей регистра и сделал свой список, который бы заполнял запросом в процедуре "ПередОткрытием". При этом, зная, что запрос ничего не вернул, я могу проконтролировать ситуацию отсутствия подходящих записей и запретить открытие формы(установив Отказ = Истина). Но если твою концепцию не ломать, то впихни контроль наличия записей перед открытием формы
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
Если ЕстьЗаписиНаДату(Дата) Тогда
ПараметрыФормы = Новый Структура;
Настройки = Новый НастройкиКомпоновкиДанных;
ЭлементОтбораДатаНачала = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораДатаНачала.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Регистратор.Дата");
ЭлементОтбораДатаНачала.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
ЭлементОтбораДатаНачала.ПравоеЗначение = НачалоДня(Объект.Дата);
ЭлементОтбораДатаНачала.Использование = Истина;
ЭлементОтбораДатаОкончания = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораДатаОкончания.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Регистратор.Дата");
ЭлементОтбораДатаОкончания.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
ЭлементОтбораДатаОкончания.ПравоеЗначение = КонецДня(Объект.Дата);
ЭлементОтбораДатаОкончания.Использование = Истина;
ПараметрыФормы.Вставить("ФиксированныеНастройки", Настройки);
Закрытие = Новый ОписаниеОповещения("ОписаниеЗакрытия",ЭтаФорма);
ОткрытьФорму("РегистрСведений.ПериодическийРасход.ФормаСписка",ПараметрыФормы,ЭтаФорма,,,,Закрытие);
Иначе
Сообщить("Нет записей");
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ЕстьЗаписиНаДату(Дата)
...
Запрос на наличие записей на дату в РС
...
Возврат НЕ Запрос.Пустой();
КонецФункции
Решил вопрос созданием произвольной формы, остался последний недочет, если нет записей в регистре сведений на заданную дату, то открывается пустая форма, как это исправить не могу понять. Подскажите как написать условие на проверку записей и куда его вставлять (в событие приоткрытии или присозданиинасервере или еще куда-нибудь?).
54.
ResetAtreides
26.05.17 12:37 Сейчас в теме+1.24 $m
Запрос.Текст =
"ВЫБРАТЬ
| ПериодическийРасходСрезПоследних.Кошелек КАК Кошелек,
| ПериодическийРасходСрезПоследних.Отправитель КАК Отправитель,
| ПериодическийРасходСрезПоследних.Сумма КАК Сумма,
| ПериодическийРасходСрезПоследних.Регистратор.Дата КАК РегистраторДата
|ИЗ
| РегистрСведений.ПериодическийПриход.СрезПервых КАК ПериодическийРасходСрезПоследних
|ГДЕ
| ПериодическийРасходСрезПоследних.Регистратор.Дата Между &НачалоДня и &КонецДня";
Запрос.УстановитьПараметр("НачалоДня",НачалоДня(Дата));
Запрос.УстановитьПараметр("КонецДня",КонецДня(Дата));
В итоге вот так щас, но в отладчике "результат" пустой всегда
Функция ЕстьЗаписиНаДату(Дата) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПериодическийРасходСрезПоследних.Кошелек КАК Кошелек,
| ПериодическийРасходСрезПоследних.Отправитель КАК Отправитель,
| ПериодическийРасходСрезПоследних.Сумма КАК Сумма,
| ПериодическийРасходСрезПоследних.Регистратор.Дата Между &НачалоДня и &КонецДня КАК РегистраторДата
|ИЗ
| РегистрСведений.ПериодическийПриход.СрезПервых КАК ПериодическийРасходСрезПоследних
|ГДЕ
| ПериодическийРасходСрезПоследних.Регистратор.Дата Между &НачалоДня и &КонецДня";
Запрос.УстановитьПараметр("НачалоДня",НачалоДня(Дата));
Запрос.УстановитьПараметр("КонецДня",КонецДня(Дата));
Результат = Запрос.Выполнить();
Возврат НЕ Результат.Пустой();
КонецФункции
(57)
Да уж, под вечер вообще невнимательным становлюсь)
Хочу получить расход из таблицы прихода, да еще и срез первых. Как так написал не пойму), теперь вроде все работает. Спасибо reset
|ИЗ
| РегистрСведений.ПериодическийПриход.СрезПервых КАК ПериодическийРасходСрезПоследних
Странно как-то, у меня есть 2 документа на 22 и 2 документа на 23 число.
Только что менял дату на все дни месяца по очереди, открылась форма на 22, 24 и 25 числе
Функция ЕстьЗаписиНаДату(Дата) Экспорт
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ПериодическийРасходСрезПоследних.Кошелек КАК Кошелек,
| ПериодическийРасходСрезПоследних.Отправитель КАК Отправитель,
| ПериодическийРасходСрезПоследних.Сумма КАК Сумма,
| ПериодическийРасходСрезПоследних.Регистратор.Дата КАК Дата
|ИЗ
| РегистрСведений.ПериодическийПриход.СрезПервых КАК ПериодическийРасходСрезПоследних
|ГДЕ
| ПериодическийРасходСрезПоследних.Регистратор.Дата Между &НачалоДня и &КонецДня");
Запрос.УстановитьПараметр("НачалоДня",НачалоДня(Дата));
Запрос.УстановитьПараметр("КонецДня",КонецДня(Дата));
Результат = Запрос.Выполнить().Выбрать();
Возврат НЕ Результат.Следующий();
КонецФункции
(60) Возможно потому, что ты регистр не по назначению используешь, я тебя это (16) писал. Концепцию сменил, а архитектуру старую оставил. В такой реализации тебе регистр сведений, а тем более "срез последних", совсем не нужен, все можно из самого документа вытащить. У тебя запрос работает примерно так - получает данные среза, а потом среди полученного выбирает условие "ГДЕ", т.е. в таблице движений данные-то есть, но срез тебе только последние данные оставляет, а там уже условию "ГДЕ" не из чего отбирать. Если все таки так хочешь оставить, бери не из среза, а из самих движений
Все-таки, заметил одну неточность, может я неправильно объяснил задачу изначально. У меня открываются все записи именно на заданную дату, а надо только на заданный день, в любом месяце и году.
Попробовал исправить, но не получилось. Я так понял, мне начало дня и конец дня уже использовать не надо?
&НаКлиенте
Процедура ДатаПриИзменении(Элемент) экспорт
Если ЧислоЗаписей.ЕстьЗаписиПриход(Объект.Дата) Тогда
ПараметрыФормы = Новый Структура;
Настройки = Новый НастройкиКомпоновкиДанных;
ЭлементОтбораДата = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораДата.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Регистратор.Дата");
ЭлементОтбораДата.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбораДата.ПравоеЗначение = День(Объект.Дата);
ЭлементОтбораДата.Использование = Истина;
ПараметрыФормы.Вставить("ФиксированныеНастройки", Настройки);
Закрытиее = Новый ОписаниеОповещения("ОписаниеЗакрытия",ЭтаФорма);
ОткрытьФорму("РегистрСведений.ПериодическийПриход.Форма.ФормаВыбора",ПараметрыФормы,ЭтаФорма,,,,Закрытиее);
КонецЕсли;
Показать
Функция ЕстьЗаписиПриход(Дата) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПериодическийПриход.Кошелек КАК Кошелек,
| ПериодическийПриход.Отправитель КАК Отправитель,
| ПериодическийПриход.Сумма КАК Сумма,
| ПериодическийПриход.Регистратор.Дата КАК РегистраторДата
|ИЗ
| РегистрСведений.ПериодическийПриход КАК ПериодическийПриход
|ГДЕ
| День(ПериодическийПриход.Регистратор.Дата) = &ТекДень";
Запрос.УстановитьПараметр("ТекДень",День(Дата));
Результат = Запрос.Выполнить();
Возврат НЕ Результат.Пустой();
КонецФункции
и на самой форме документа в датаприизменении убрал параметры отбора, оставил так
Если ЧислоЗаписей.ЕстьЗаписиПриход(Объект.Дата) Тогда
Закрытие = Новый ОписаниеОповещения("ОписаниеЗакрытия",ЭтаФорма);
Парам = Новый Структура("ТекДата", День(Объект.Дата));
ОткрытьФорму("РегистрСведений.ПериодическийПриход.Форма.ФормаВыбора",Парам,ЭтаФорма,,,,Закрытие);
КонецЕсли;
(67)
Задача еще немного усложнилась, сейчас у меня есть:
2 документа:
- ПриходДенежныхСредств
- ПериодическиеПоступления
и 2 регистра
- РегистрПостпуления (оборотный регистр накопления, в котором записываются проведенные документы ПриходДенежныхСредств)
- ПериодическийПриход (регистр сведений, в котором записываются проведенные документы ПериодическиеПоступления)
Т.е. в документе ПериодическиеПоступления записываются запланированные поступления, но этим документом деньги не поступают (не отражаются в регистре поступления). При изменении даты в документе у меня должны отображаться запланированные поступления на выбранный день, при выборе которых данные попадают на форму создания или изменения документа ПриходДенежныхСредств. Это реализовано, а дальше начинается следующая проблема:
Надо как-то реализовать контроль выполненных операций. Например при указании даты 22 числа у меня отображаются запланированные записи на 22 число из регистра сведений, я выбираю одну из записей и провожу ее. Мне надо сделать так, чтобы в этом месяце 22 числа, я не мог заново выбрать и провести эту запись (т.е. при открытии формы выбора ее там быть не должно)
Если более кратко, то принцип такой: в регистре сведений записаны запланированные поступления на месяц, при открытии формы выбора должны отображаться только те, которые еще не были проведены в этом месяце на заданный день.
Я думаю, что надо наверное делать через уникальный идентификатор как-то (для записей регистра сведений создать уникальный идентификатор и перед открытием проверять есть ли запись с таким идентификатором в регистре накопления). Только не пойму куда его при выборе передавать, как его отправить в регистр накопления вместе с записью и как потом добавить в условие отбор по нему. Или может это неправильный способ и есть проще.
(68) Ты же при смене даты сейчас выбираешь не документ "ПериодическиеПоступления", а его записи РС "ПериодическийПриход"? Я бы чуть изменил структуру выбора периодических поступлений
1) Форму выбора записей РС "ПериодическийПриход" при смене даты переделал бы, что бы она вместо записей регистра выводила таблицу значений, с колонками "Использовать"(Флажок), "Отправитель","Кошелек" и "Сумма"(как в РС)
2) Таблица заполняется при открытии формы. Берет данные из РС "ПериодическийПриход" за указанный день месяца и вычитает данные оборота за текущий день из РН "РегистрПостпуления" по измерениям "Отправитель","Кошелек" и "Сумма". Возможно потребуется исключить обороты текущего документа или его движения удалить перед заполнением, это смотря как у тебя концепция будет. Из полученной таблицы исключить строки с минусовой суммой (их не было в периодических поступлениях)
3) При нажатии кнопки выбора, документу передается массив строк таблицы с установленными флажками "Использовать", и документ их добавляет в свою ТЧ
Для следующего документа в этом дне эти строки отображаться не будут, т.к. из остатки будут снижены движениями этого документа
(69)
Чтобы почти ничего не менять, думаю сделать так:
В регистре сведений и в регистре накоплений создать измерение УИД (Уникальный идентификатор), в документ ПериодическиеПоступления добавить реквизит УИД, в процедуре ПослеЗаписи документа добавить :
Объект.УИД = Новый УникальныйИдентификатор;
Далее при проведении УИД записывается в регистр сведений. А в регистре накоплений все поля УИД пока пустые, далее при изменении даты в документе открывается форма выбора, оттуда выбираю 1 из строк регистра сведений, считываются данные этой строки вместе с УИД и при проведении в регистре накоплений записываются УИД этой записи.
А в запросе динамического списка напишу где день(РС.период) = день(РН.период) и рс.уид <> рн.уид
Получится так или нет? Пока что попробую так сделать, если не получится буду думать дальше.
(77)
А почему в срезе последних они не будут работать? (Кстати, периодичность у регистра сведений убрал, и по периоду сделал отбор, убрал регистратор.дата)
(78) Срез последних выдает последнюю запись в разрезе измерений, т.е. большей части записей в этой таблице просто нет. Поэтому какой может быть отбор через "ГДЕ", если большая часть уже отсеяна?
"ВЫБРАТЬ
| ПериодическийПриходСрезПоследних.Период КАК Период,
| ПериодическийПриходСрезПоследних.Регистратор КАК Регистратор,
| ПериодическийПриходСрезПоследних.НомерСтроки КАК НомерСтроки,
| ПериодическийПриходСрезПоследних.Активность КАК Активность,
| ПериодическийПриходСрезПоследних.Кошелек КАК Кошелек,
| ПериодическийПриходСрезПоследних.Отправитель КАК Отправитель,
| ПериодическийПриходСрезПоследних.Сумма КАК Сумма,
| ПериодическийПриходСрезПоследних.УИД КАК УИД
|ИЗ
| РегистрСведений.ПериодическийПриход.СрезПоследних КАК ПериодическийПриходСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПериодическиеПроведенные.СрезПоследних КАК ПериодическиеПроведенные
| ПО ПериодическийПриходСрезПоследних.УИД = ПериодическиеПроведенные.УИД
| И (ДЕНЬ(ПериодическийПриходСрезПоследних.Период) = ДЕНЬ(ПериодическиеПроведенные.Период))
| И (МЕСЯЦ(&ТекДата) = МЕСЯЦ(ПериодическиеПроведенные.Период))
|ГДЕ
| ПериодическиеПроведенные.УИД ЕСТЬ NULL
| И ДЕНЬ(ПериодическийПриходСрезПоследних.Период) = ДЕНЬ(&ТекДата)
| И МЕСЯЦ(ПериодическийПриходСрезПоследних.Период) <= МЕСЯЦ(&ТекДата)";
Так, добавил в обоих документах реквизит УИД и в обоих регистрах измерение УИД,
Теперь при записи документа ПериодическиеПоступления, создается УИД. Далее при изменении даты документа ПриходДС открывается форма выбора, там все записи уже с УИД, выбираю запись, уид записывается в форму документа ПриходДС и при проведении этого документа записывается в РН. Т.е. в РН записи не выбранные из РС, а просто созданные в форме документа находятся в РН с пустым УИД.
Все пока работает также, вот только не пойму как сделать запрос в динамическом списке формы РС
ВЫБРАТЬ
РегистрСведенийПериодическийПриход.Период КАК Период,
РегистрСведенийПериодическийПриход.Регистратор КАК Регистратор,
РегистрСведенийПериодическийПриход.НомерСтроки КАК НомерСтроки,
РегистрСведенийПериодическийПриход.Активность КАК Активность,
РегистрСведенийПериодическийПриход.Кошелек КАК Кошелек,
РегистрСведенийПериодическийПриход.Отправитель КАК Отправитель,
РегистрСведенийПериодическийПриход.Сумма КАК Сумма,
РегистрСведенийПериодическийПриход.УИД КАК УИД
ИЗ
РегистрСведений.ПериодическийПриход КАК РегистрСведенийПериодическийПриход
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.РегистрПоступления КАК РегистрПоступления
ПО РегистрСведенийПериодическийПриход.УИД <> РегистрПоступления.УИД
ГДЕ
ДЕНЬ(РегистрСведенийПериодическийПриход.Период) = &ТекДата
Показать
При изменении даты вылазит ошибка: Обнаружено дублирование ключевых значений в колонках:"...." ну и все колонки перечислены.
Что-то не так с запросом, как его исправить? Или можно отдельно от запроса проверку по УИД сделать?
Не надо так. Ты уже типовой механизм "СрезПоследних" убил, а так ещё и "Обороты" убьешь ) Если планируешь стандартов 1С придерживаться, лучше другое решение выбери. Да и не универсальное твое решение, куча проблем вылезет в различных ситуациях