gifts2017

1С: Специалист по платформе. Задача 1.25

Опубликовал Игорь Шкурин (Betis) в раздел Программирование - Практика программирования

Решение задачи 1.25 Специалист по платформе.

 

Решение:

1) Для решения потребуется 2 регистра накопления "Взаиморасчеты" и "Счета".
Структуры регистров:
Взаиморасчеты Измерения "Контрагент", "Счет" ресурс "Сумма".
Счета Измерения "Контрагент",  ресурс "Сумма".

2)  Документы "Расходная накладная " и 3 новых "Пени", "ПоступлениеДенег" и "Счет".
Документы будут делать движения по регистрам след. образом:
Счет ( Счет +)
Расходная накладная (Взаиморасчеты+ , Счета-)
Поступление денег "Взаиморасчеты-)
Пени(Взаиморасчеты+)

3) Документ "Счет"
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Движения.Счета.Записывать = Истина;
Движение = Движения.Счета.ДобавитьПриход();
Движение.Период = Дата;
Движение.Счет = Ссылка;
Движение.Сумма = Сумма;
КонецПроцедуры


4) Документ "Расходная накладная"
Чтобы документ вводился только на основании счета, потребуется 2 процедуры

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Если ДанныеЗаполнения = Неопределено Тогда
Отказ = Истина;
Сообщение = Новый("СообщениеПользователю");
Сообщение.Текст = "Документ можно вводить только на основании счета";
Сообщение.Сообщить();
Иначе
Счет = ДанныеЗаполнения;
Контрагент = ДанныеЗаполнения.Контрагент;
Дата = ТекущаяДата();
КонецЕсли;
КонецПроцедуры
 

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Не ЗначениеЗаполнено(Объект.Счет) Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры

 
Обработка проведения:
 
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
 
Движения.Счета.Записывать = Истина;
Движения.Взаиморасчеты.Записывать = Истина;
// Блокировка
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.Счета");
ЭлементБлокировки.УстановитьЗначение("Счет", Счет);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
 
Запрос = Новый("Запрос");
Запрос.Текст ="ВЫБРАТЬ
              |СчетаОстатки.СуммаОстаток КАК Долг
              |ИЗ
              |РегистрНакопления.Счета.Остатки(&ТочкаИтогов, Счет = &Счет) КАК СчетаОстатки";
Запрос.УстановитьПараметр("Счет",Счет);
ТочкаИтогов = ?(РежимПроведения= РежимПроведенияДокумента.Оперативный, Неопределено, Новый Граница(МоментВремени(),ВидГраницы.Исключая));
Запрос.УстановитьПараметр("ТочкаИтогов",ТочкаИтогов);
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда 
Выборка = Результат.Выбрать();
Выборка.Следующий();
Если Выборка.Долг < СуммаПоДокументу Тогда
Отказ = Истина;
Сообщение = Новый("СообщениеПользователю");
Сообщение.Текст = "Сумма документа превышает сумму долга "+ Выборка.Долг;
Сообщение.Сообщить();
КонецЕсли;
КонецЕсли;
 
Если Не Отказ Тогда
Движение = Движения.Счета.ДобавитьРасход();
Движение.Период = Дата;
Движение.Счет = Счет;
Движение.Сумма = СуммаПоДокументу;
 
Движение = Движения.Взаиморасчеты.ДобавитьПриход();
Движение.Период = Дата;
Движение.Счет = Счет;
Движение.Сумма = СуммаПоДокументу;
Движение.Контрагент = Контрагент;
КонецЕсли;
КонецПроцедуры
 
 
5) Документ "Поступление денег"
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.Взаиморасчеты.Записывать = Истина;
Движения.Взаиморасчеты.Записать() ;
 
// Блокировка
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.Взаиморасчеты");
ЭлементБлокировки.УстановитьЗначение("Контрагент", Контрагент);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
 
Запрос  = Новый("Запрос");
Запрос.Текст = "ВЫБРАТЬ
               |ВзаиморасчетыОстатки.Счет,
               |ВзаиморасчетыОстатки.СуммаОстаток КАК Долг
               |ИЗ
               |РегистрНакопления.Взаиморасчеты.Остатки(&ТочкаИтогов, Контрагент = &Контрагент) КАК ВзаиморасчетыОстатки
               |
               |УПОРЯДОЧИТЬ ПО
               |ВзаиморасчетыОстатки.Счет.Дата
               |ИТОГИ
               |СУММА(Долг)
               |ПО
               |ОБЩИЕ";
 
Запрос.УстановитьПараметр("Контрагент",Контрагент);
ТочкаИтогов = ?(Режим= РежимПроведенияДокумента.Оперативный, Неопределено, Новый Граница(МоментВремени(),ВидГраницы.Исключая));
Запрос.УстановитьПараметр("ТочкаИтогов",ТочкаИтогов);
 
ВыборкаИтоги = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Общие");
ВыборкаИтоги.Следующий();
Если ВыборкаИтоги.Долг < Сумма Тогда
Отказ = Истина;
Сообщение = Новый("СообщениеПользователю");
Сообщение.Текст = "Сумма документа превышает сумму долга "+ ВыборкаИтоги.Долг;
Сообщение.Сообщить();
Иначе
ОсталосьСписать = Сумма;
Выборка = ВыборкаИтоги.Выбрать();
Пока Выборка.Следующий() и ОсталосьСписать >0 Цикл 
СуммаКСписанию = Мин(ОсталосьСписать, Выборка.Долг);
Движение = Движения.Взаиморасчеты.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Контрагент = Контрагент;
Движение.Счет = Выборка.Счет;
Движение.Сумма = СуммаКСписанию;
ОсталосьСписать = ОсталосьСписать - СуммаКСписанию;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
 

6) Документ "Пени"

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Движения.Взаиморасчеты.Записывать = Истина;
Движения.Взаиморасчеты.Записать() ;

Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.Взаиморасчеты");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.Счета");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               |СчетаОстаткиИОбороты.Счет,
               |СчетаОстаткиИОбороты.СуммаКонечныйОстаток,
               |МАКСИМУМ(СчетаОстаткиИОбороты.Регистратор.Дата) КАК ДатаПолнойОтгрузки
               |ПОМЕСТИТЬ Счета
               |ИЗ
               |РегистрНакопления.Счета.ОстаткиИОбороты(, &ТочкаИтогов, Регистратор, , ) КАК СчетаОстаткиИОбороты
               |ГДЕ
               |СчетаОстаткиИОбороты.СуммаКонечныйОстаток = 0
               |
               |СГРУППИРОВАТЬ ПО
               |СчетаОстаткиИОбороты.Счет,
               |СчетаОстаткиИОбороты.СуммаКонечныйОстаток
               |;
               |
               |////////////////////////////////////////////////////////////////////////////////
               |ВЫБРАТЬ
               |Счета.Счет,
               |ЕСТЬNULL(ВзаиморасчетыОстатки.СуммаОстаток, 0) КАК Долг,
               |Счета.Счет.ПроцентПени КАК ПроцентПени,
               |ВзаиморасчетыОстатки.Контрагент,
               |РАЗНОСТЬДАТ(Счета.ДатаПолнойОтгрузки, &Дата, ДЕНЬ) КАК ДнейПросрочки
               |ИЗ
               |РегистрНакопления.Взаиморасчеты.Остатки(
               |&ТочкаИтогов,
               |Счет В
               |(ВЫБРАТЬ
               |Счета.Счет
               |ИЗ
               |Счета)) КАК ВзаиморасчетыОстатки
               |ЛЕВОЕ СОЕДИНЕНИЕ Счета КАК Счета
               |ПО ВзаиморасчетыОстатки.Счет = Счета.Счет";

Запрос.УстановитьПараметр("Дата", Дата);
ТочкаИтогов = ?(РежимПроведения= РежимПроведенияДокумента.Оперативный, Неопределено, Новый Граница(МоментВремени(),ВидГраницы.Исключая));
Запрос.УстановитьПараметр("ТочкаИтогов",ТочкаИтогов);

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Движение = Движения.Взаиморасчеты.ДобавитьПриход();
Движение.Период     = Дата;
Движение.Счет       = Выборка.Счет;
Движение.Контрагент = Выборка.Контрагент;
Движение.Сумма      = Выборка.Долг * Выборка.ДнейПросрочки *(Выборка.ПроцентПени/100);
КонецЦикла;
КонецПроцедуры
 
7) Отчет "Анализ состояния счетов"

Текст запроса:

ВЫБРАТЬ
СчетаОстаткиИОбороты.Счет,
МАКСИМУМ(СчетаОстаткиИОбороты.Регистратор.Дата) КАК РегистраторДата
ПОМЕСТИТЬ ОтгруженныеСчета
ИЗ
РегистрНакопления.Счета.ОстаткиИОбороты(, &Период, Регистратор, , ) КАК СчетаОстаткиИОбороты
ГДЕ
СчетаОстаткиИОбороты.СуммаКонечныйОстаток = 0

СГРУППИРОВАТЬ ПО
СчетаОстаткиИОбороты.Счет
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
СчетаОстатки.Счет
ПОМЕСТИТЬ НеотгруженныеСчета
ИЗ
РегистрНакопления.Счета.Остатки(&Период, ) КАК СчетаОстатки
ГДЕ
СчетаОстатки.СуммаОстаток > 0
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВзаиморасчетыОстатки.Счет,
ОтгруженныеСчета.РегистраторДата КАК ДатаПолнойОтгрузки,
ВзаиморасчетыОстатки.СуммаОстаток КАК ЗадолженностьПоСчету
ИЗ
РегистрНакопления.Взаиморасчеты.Остатки(
&Период,
Счет В
(ВЫБРАТЬ
НеотгруженныеСчета.Счет КАК Счет
ИЗ
НеотгруженныеСчета КАК НеотгруженныеСчета)
ИЛИ Счет В
(ВЫБРАТЬ
ОтгруженныеСчета.Счет КАК Счет
ИЗ
ОтгруженныеСчета КАК ОтгруженныеСчета)) КАК ВзаиморасчетыОстатки
ЛЕВОЕ СОЕДИНЕНИЕ ОтгруженныеСчета КАК ОтгруженныеСчета
ПО ВзаиморасчетыОстатки.Счет = ОтгруженныеСчета.Счет
ГДЕ

ВзаиморасчетыОстатки.СуммаОстаток > 0


8) Отчет "Анализ счета за период"

ВЫБРАТЬ
ВзаиморасчетыОстаткиИОбороты.Регистратор КАК Документ,
ВзаиморасчетыОстаткиИОбороты.СуммаПриход КАК Задолженность,
ВзаиморасчетыОстаткиИОбороты.СуммаРасход КАК Оплачено
ИЗ
РегистрНакопления.Взаиморасчеты.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, Регистратор, ДвиженияИГраницыПериода, Счет = &Счет) КАК ВзаиморасчетыОстаткиИОбороты

УПОРЯДОЧИТЬ ПО
ВзаиморасчетыОстаткиИОбороты.Регистратор.Дата

Скачать файлы

Наименование Файл Версия Размер
Z1_25.dt 4
.dt 180,72Kb
12.03.15
4
.dt 180,72Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Василий Коровин (vasyak319) 12.03.15 17:24
ОбработкаЗаполнения написана неправильно, так как ДанныеЗаполнения при интерактивном вводе нового не всегда равны Неопределено, так что нужно проверять, что передан именно счёт.
Дальше читать не стал.
2. Артем Целовальников (slazzy) 12.03.15 17:48
4) Документ "Расходная накладная"
Чтобы документ вводился только на основании счета, потребуется 2 процедуры

На самом деле для этого понадобится 1 строчка

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Отказ = НЕ ЗначениеЗаполнено(Параметры.Основание);
КонецПроцедуры
...Показать Скрыть


Кстати за такой синтаксис отрубают руки
Запрос = Новый("Запрос");



Движения.Счета.Записывать = Истина;
Движения.Взаиморасчеты.Записывать = Истина;
// Блокировка
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.Счета");
ЭлементБлокировки.УстановитьЗначение("Счет", Счет);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
 
Запрос = Новый("Запрос");
Запрос.Текст ="ВЫБРАТЬ
              |СчетаОстатки.СуммаОстаток КАК Долг
              |ИЗ
              |РегистрНакопления.Счета.Остатки(&ТочкаИтогов, Счет = &Счет) КАК СчетаОстатки";
Запрос.УстановитьПараметр("Счет",Счет);
ТочкаИтогов = ?(РежимПроведения= РежимПроведенияДокумента.Оперативный, Неопределено, Новый Граница(МоментВремени(),ВидГраницы.Исключая));
Запрос.УстановитьПараметр("ТочкаИтогов",ТочкаИтогов);
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда 
Выборка = Результат.Выбрать();
Выборка.Следующий();
Если Выборка.Долг < СуммаПоДокументу Тогда
Отказ = Истина;
Сообщение = Новый("СообщениеПользователю");
Сообщение.Текст = "Сумма документа превышает сумму долга "+ Выборка.Долг;
Сообщение.Сообщить();
КонецЕсли;
КонецЕсли;
 
Если Не Отказ Тогда
Движение = Движения.Счета.ДобавитьРасход();
Движение.Период = Дата;
Движение.Счет = Счет;
Движение.Сумма = СуммаПоДокументу;
 
Движение = Движения.Взаиморасчеты.ДобавитьПриход();
Движение.Период = Дата;
Движение.Счет = Счет;
Движение.Сумма = СуммаПоДокументу;
Движение.Контрагент = Контрагент;
КонецЕсли;
КонецПроцедуры
...Показать Скрыть

Вот тут правильнее было бы использовать новую методику проведения, сначала пишем потом читаем. За это тоже снимут баллы
3. Алексей Рожнятовский (spetzpozh) 13.03.15 08:26
Задач в сборнике сколько, штук 140 всех вместе? Держите нас в курсе :))
Betis; baton_pk; +2 Ответить 1
4. Игорь Шкурин (Betis) 13.03.15 08:36
(1) vasyak319, не могу согласится, по условию задачи накладная может вводится только на основании счета, поэтому "данныезаполнения" могут быть только "счет" или неопределено, или Вы видите еще какие-то варианты?
5. Игорь Шкурин (Betis) 13.03.15 08:37
6. Игорь Шкурин (Betis) 13.03.15 08:46
(2) slazzy,
1) На самом деле для этого понадобится 1 строчка

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Отказ = НЕ ЗначениеЗаполнено(Параметры.Основание);
КонецПроцедуры


1) вместо 2 процедур одна строчка? это вы загнули.
Реквизиты накладной заполнить то надо как-то.

предлагаете вместо моих 3 строчек
Если Не ЗначениеЗаполнено(Объект.Счет) Тогда
Отказ = Истина;
КонецЕсли;

одну
Отказ = НЕ ЗначениеЗаполнено(Параметры.Основание);
КонецПроцедуры
сокращение строк кода это конечно хорошо, но надеюсь за это баллы не снимают.

2) Кстати за такой синтаксис отрубают руки
Запрос = Новый("Запрос");

Я в шоке, надеюсь сможете обосновать (если конечно это была не шутка)
3) Здесь согласен, упустил этот момент, спасибо!
7. Артем Целовальников (slazzy) 13.03.15 09:36
(6) Betis,
Я в шоке, надеюсь сможете обосновать (если конечно это была не шутка)

Нет, не шутка. Подобное создание объектов запрещено. Это относится и ко всем остальным объектам в Вашем коде.
http://its.1c.ru/db/v8std#content:2149184100:hdoc

Реквизиты накладной заполнить то надо как-то.

Ну значит 2 строчки ) всё равно у вас это сделано довольно странно. К примеру, Вы в ОбработкаЗаполнения выставляете Отказ = Истина, но зачем? В этой процедуре нет Отказа вообще.

сокращение строк кода это конечно хорошо, но надеюсь за это баллы не снимают.

С чего бы?
8. Игорь Шкурин (Betis) 13.03.15 09:53
(7) slazzy,
1) К сожалению у меня доступа к ИТС, может как-то страничку скинете?
2) Верно подмечено, отказа в обработке заполнения нету, зря я его сунул туда)
3)С чего бы? Просто не слышал об этом, на экзамене дай боже сделать как удобно, думаю времени на анализ того как сократить код не останется.
9. Василий Коровин (vasyak319) 13.03.15 10:49
(4) Betis, Я бы запостил сюда цитату, но уверен, что ваш Синтакс-Помощник ничуть не хуже моего, поэтому забивать форум не буду. Просто гляньте.
10. Артем Целовальников (slazzy) 13.03.15 10:55
(8) Betis, у меня эта ссылка работает и без доступа )
но я скопирую текст оттуда

Для программного создания прикладных объектов следует использовать методы соответствующих менеджеров (СоздатьЭлемент, СоздатьДокумент, СоздатьНаборЗаписей и т.д.).

Для программного создания прикладных объектов, у которых существует соответствующие менеджеры объектов, использование конструктора (оператор встроенного языка Новый) запрещается.

Правильно:
ДокументПриходная = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();

Неправильно:
ДокументПриходная = Новый("ДокументОбъект.ПоступлениеТоваровУслуг");


Конкретно эта цитата относится только к объектам, но в общем случае запрещается создавать что-то если вы изначально знаете тип и существует конструктор.
То есть если можно написать Новый Запрос, то писать Новый("Запрос") запрещено.
Подразумеваю, что это привычка из семерки
11. Игорь Шкурин (Betis) 13.03.15 11:12
(10) slazzy, Я думаю Вы сделали неправильные выводы. Как Вы и сами верно выразились "Конкретно эта цитата относится только к объектам", а остальное Вы от себя додумали. Лично я впервые такой метод конструктора увидел в материалах Евгения Гилева, надо будет его тоже предупредить)
12. Игорь Шкурин (Betis) 13.03.15 11:17
(9) vasyak319,может Вы удивитесь, но в моем Синтакс-Помощнике как раз и описаны 2 варианта конструктора Новый.
13. Василий Коровин (vasyak319) 13.03.15 12:07
(12) Betis, вы бы посмотрели, на какое из ваших сообщений я ответил. Про Новый там речь не шла.
14. Игорь Шкурин (Betis) 13.03.15 12:57
(13) vasyak319,
Прошу пардона, был невнимателен.
СП глянул, увы не понял на что Вы намекаете.
Еще раз возвращаюсь к Вашему первому комменту
"ОбработкаЗаполнения написана неправильно, так как ДанныеЗаполнения при интерактивном вводе нового не всегда равны Неопределено, так что нужно проверять, что передан именно счёт.
Дальше читать не стал."

Во всяком случае моя "неправильная" обработка заполнения у меня работает без ошибок. Тестил 2 варианта ввод на основании - тогда ДанныеЗаполнения= Документ.Cчет и при интерактивном вводе - тогда ДанныеЗаполнения=Неопределено. В процедуре обрабатывается каждый из варинтов , иных вариантов обнаружить не удалось.
15. Артем Целовальников (slazzy) 13.03.15 13:20
(11) Betis,
внимательнее читайте сообщения :) в курсах Гилева данный метод создания объектов используется при динамическом создании объекта, тип которого изначально не известен, в 99.99% случаях это не так и всё известно заранее. Вам нужен запрос, вы делаете запрос.
Найдите в любой типовой 1С конфигурации, где бы они создавали запрос как Вы.

Во всяком случае моя "неправильная" обработка заполнения у меня работает без ошибок. Тестил 2 варианта ввод на основании - тогда ДанныеЗаполнения= Документ.Cчет и при интерактивном вводе - тогда ДанныеЗаполнения=Неопределено. В процедуре обрабатывается каждый из варинтов , иных вариантов обнаружить не удалось.

На самом деле если в динамическом списке установлен отбор, то ДанныеЗаполнения будут Структура и туда передадутся данные, которые установлены в отборе. Поэтому vasyak319 сделал абсолютно верное замечание. Если у Вас что-то работает, это не значит, что это будет работать всегда :)


и если кто-то где-то написал Сообщение = Новый("СообщениеПользователю") то вовсе не значит, что надо так делать. Так делать не надо :)
16. Игорь Шкурин (Betis) 13.03.15 13:40
(15) slazzy, Во-первых спасибо Вам за Ваш труд)
а в остальном Вы меня не убедили, мне удобнее использовать конструктор Новый("СообщениеПользователю") и пока я не увижу информации из более авторитетных источников (не в обиду конечно)), я буду использовать этот способ.
Насчет замечания vasyak319, я же пишу типовое решение, а решаю конкретную задачу и у меня нет динамических списков, ввод на основании возможен только на основании документа "счета". Но тут еще соглашусь, следующий раз сделаю по-другому, чтобы не подвергаться обструкции)
17. Артем Целовальников (slazzy) 13.03.15 14:02
(16) Betis,
а в остальном Вы меня не убедили, мне удобнее использовать конструктор Новый("СообщениеПользователю") и пока я не увижу информации из более авторитетных источников (не в обиду конечно)), я буду использовать этот способ.

то есть 100% типовых конфигураций это не авторитетный источник?
Есть ещё такая штука как читаемость и однотипность кода. Писать надо не так, как удобно, а так, как принято...Я разрабатываю типовые конфигурации(не в фирме 1С) и если я напишу подобный конструктор меня вероятно выгонят ))


Насчет замечания vasyak319, я же пишу типовое решение, а решаю конкретную задачу и у меня нет динамических списков, ввод на основании возможен только на основании документа "счета". Но тут еще соглашусь, следующий раз сделаю по-другому, чтобы не подвергаться обструкции)

Вы можете создавать документ на основании из списка Счетов. Список счетов это динамический список и если в этом списке кто-то установит отбор, то Ваш код перестанет работать.
18. Игорь Шкурин (Betis) 13.03.15 14:13
(17) slazzy, Вы можете создавать документ на основании из списка Счетов. Список счетов это динамический список и если в этом списке кто-то установит отбор, то Ваш код перестанет работать

Установил отбор, выбрал сразу несколько документов из списка - ничего не сломалось, ДанныеЗаполнения = первый документ типа счет из списка счетов. Ну да ладно, все равно больше так не буду.

Кстати, написал письмо в УЦ №1 по-поводу конструктора Новый. Если ответят дам знать.
19. Артем Целовальников (slazzy) 13.03.15 14:35
(18) Betis,
точнее я слегка перепутал. Попробуйте установить отбор в списке договоров и создать договор из этого списка.

Кстати, написал письмо в УЦ №1 по-поводу конструктора Новый. Если ответят дам знать.

До чего ж упёртые бывают люди ))
20. Василий Коровин (vasyak319) 13.03.15 14:35
(14) Betis,
При интерактивном вводе нового из формы списка параметр является структурой, элементы которой соответствуют тем параметрам отбора формы списка, у которых способ сравнения Равно или ВСписке с единственным элементом списка. Если таких элементов отбор списка не содержит, данный параметр равен Неопределено
21. Игорь Шкурин (Betis) 13.03.15 15:18
(19) slazzy, договоров нет, что Вы имеете в виду под договорами?
22. Игорь Шкурин (Betis) 13.03.15 15:25
(20) vasyak319, В форме списка устанавливал отбор на "=" (по сумме") и на "всписке" (на контрагентов). Ошибки не случилось.
23. Артем Целовальников (slazzy) 13.03.15 15:36
(21) Betis, я просто туплю, извините :)) по работе договор делаю
я имел в виду попробуйте в списке Расходная сделать отбор и создать документ Расходная
24. Игорь Шкурин (Betis) 13.03.15 15:57
(23) slazzy, Все понял наконец-то, получилось сломать). Как Вы все успеваете и договора делать и меня подтягивать?)
25. борян петров (TODD22) 20.03.15 19:04
(16) Betis,
а в остальном Вы меня не убедили, мне удобнее использовать конструктор Новый("СообщениеПользователю") и пока я не увижу информации из более авторитетных источников (не в обиду конечно)), я буду использовать этот способ.


И в чём удобство?

Если набрать "Сообщ" без кавычек и нажать ctrl+q сработает автоподстановка шаблона "СообщениеПользователю".
Посмотрите как там создаётся объект.