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

12.03.15

Разработка - Подготовка к аттестации

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Z1_25.dt
.dt 180,72Kb
9
9 Скачать (1 SM) Купить за 1 850 руб.

 

Решение:

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

См. также

Подготовка к аттестации Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Обучающая программа 1С Online представляет собой интерактивное изучение языка запросов с самого начала: - 50 практических заданий с различным уровнем сложности; - Методические материалы по практике написания запросов; - Описание назначения таблиц и индексов 1С Предприятие 8; - Методика решения реальных задач запросом 1С; - Автоматическая система проверки решений с указанием ошибок; - Инструкции по решению задач с разъяснениями; - Техническая поддержка пользователей. Тренажер запросов подходит для начинающих и действующих разработчиков 1С

1800 руб.

11.02.2014    77022    95    15    

189

Подготовка к аттестации Программист Стажер Бесплатно (free)

Меня зовут Татьяна, в 1С-разработке я уже семь лет, а в этом году официально стала junior-специалистом. Рассказываю, как всё происходило.

10.09.2024    7136    PROSTO-1C    21    

13

Подготовка к аттестации Программист Стажер Платформа 1С v8.3 Россия Бесплатно (free)

Я Олег, разработчик 1С. Расскажу, как сдавал на сертификат Специалиста, в чём ошибся и что стоит учесть.

11.06.2024    14134    PROSTO-1C    51    

66

Подготовка к аттестации Программист Стажер Платформа 1С v8.3 Россия Бесплатно (free)

Хочу поделиться своей историей планирования обучения, подготовки к экзамену и сдачи непосредственно экзамена. Надеюсь, что это будет полезно и откинет все вопросы об экзамене.

04.06.2024    9343    anton99    50    

57

Подготовка к аттестации Стажер Конфигурации 1cv8 Фармацевтика, аптеки Россия Управленческий учет Бесплатно (free)

Краткий рассказ о выборе 1С как основного языка программирования для дипломной работы в университете, и само приложение к диплому.

28.05.2024    4343    DmitryOneBit    20    

20

Подготовка к аттестации Программист Стажер Платформа 1С v8.3 Россия Абонемент ($m)

В публикации предоставлено решения 7 билетов из сборника 2022 года . Решения выполнены по пунктам и подробно, каждый БП описан и решен по условиям задач. Благодаря данному решению к экзамену стало подготовиться проще, чем когда-либо.

10 стартмани

07.05.2024    8408    85    user1988637    16    

42

Подготовка к аттестации Платформа 1С v8.3 1С:ERP Управление предприятием 2 Россия Абонемент ($m)

В публикации представлены только решения тех заданий, который попадаются на экзамене 1С:СК управленческого учета ERP. Благодаря данным решениям к экзамену стало подготовиться проще, чем когда-либо.

10 стартмани

08.04.2024    2982    39    user1988637    4    

15

Подготовка к аттестации Программист Стажер Платформа 1С v8.3 Россия Бесплатно (free)

Готовилась три месяца, сдала с первого раза. Делюсь опытом, лайфхаками и ресурсами, по которым учила материал.

14.03.2024    18189    PROSTO-1C    47    

90
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. vasyak319 152 12.03.15 17:24 Сейчас в теме
ОбработкаЗаполнения написана неправильно, так как ДанныеЗаполнения при интерактивном вводе нового не всегда равны Неопределено, так что нужно проверять, что передан именно счёт.
Дальше читать не стал.
4. Betis 26 13.03.15 08:36 Сейчас в теме
(1) vasyak319, не могу согласится, по условию задачи накладная может вводится только на основании счета, поэтому "данныезаполнения" могут быть только "счет" или неопределено, или Вы видите еще какие-то варианты?
9. vasyak319 152 13.03.15 10:49 Сейчас в теме
(4) Я бы запостил сюда цитату, но уверен, что ваш Синтакс-Помощник ничуть не хуже моего, поэтому забивать форум не буду. Просто гляньте.
12. Betis 26 13.03.15 11:17 Сейчас в теме
(9) vasyak319,может Вы удивитесь, но в моем Синтакс-Помощнике как раз и описаны 2 варианта конструктора Новый.
13. vasyak319 152 13.03.15 12:07 Сейчас в теме
(12) вы бы посмотрели, на какое из ваших сообщений я ответил. Про Новый там речь не шла.
14. Betis 26 13.03.15 12:57 Сейчас в теме
(13) vasyak319,
Прошу пардона, был невнимателен.
СП глянул, увы не понял на что Вы намекаете.
Еще раз возвращаюсь к Вашему первому комменту
"ОбработкаЗаполнения написана неправильно, так как ДанныеЗаполнения при интерактивном вводе нового не всегда равны Неопределено, так что нужно проверять, что передан именно счёт.
Дальше читать не стал."

Во всяком случае моя "неправильная" обработка заполнения у меня работает без ошибок. Тестил 2 варианта ввод на основании - тогда ДанныеЗаполнения= Документ.Cчет и при интерактивном вводе - тогда ДанныеЗаполнения=Неопределено. В процедуре обрабатывается каждый из варинтов , иных вариантов обнаружить не удалось.
20. vasyak319 152 13.03.15 14:35 Сейчас в теме
(14)
При интерактивном вводе нового из формы списка параметр является структурой, элементы которой соответствуют тем параметрам отбора формы списка, у которых способ сравнения Равно или ВСписке с единственным элементом списка. Если таких элементов отбор списка не содержит, данный параметр равен Неопределено
22. Betis 26 13.03.15 15:25 Сейчас в теме
(20) vasyak319, В форме списка устанавливал отбор на "=" (по сумме") и на "всписке" (на контрагентов). Ошибки не случилось.
2. slazzy 42 12.03.15 17:48 Сейчас в теме
4) Документ "Расходная накладная"
Чтобы документ вводился только на основании счета, потребуется 2 процедуры

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

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


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



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

Вот тут правильнее было бы использовать новую методику проведения, сначала пишем потом читаем. За это тоже снимут баллы
unichkin; +1 Ответить
6. Betis 26 13.03.15 08:46 Сейчас в теме
(2) slazzy,
1) На самом деле для этого понадобится 1 строчка

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


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

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

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

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

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

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

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

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

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

С чего бы?
8. Betis 26 13.03.15 09:53 Сейчас в теме
(7) slazzy,
1) К сожалению у меня доступа к ИТС, может как-то страничку скинете?
2) Верно подмечено, отказа в обработке заполнения нету, зря я его сунул туда)
3)С чего бы? Просто не слышал об этом, на экзамене дай боже сделать как удобно, думаю времени на анализ того как сократить код не останется.
10. slazzy 42 13.03.15 10:55 Сейчас в теме
(8) у меня эта ссылка работает и без доступа )
но я скопирую текст оттуда

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

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

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

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


Конкретно эта цитата относится только к объектам, но в общем случае запрещается создавать что-то если вы изначально знаете тип и существует конструктор.
То есть если можно написать Новый Запрос, то писать Новый("Запрос") запрещено.
Подразумеваю, что это привычка из семерки
11. Betis 26 13.03.15 11:12 Сейчас в теме
(10) slazzy, Я думаю Вы сделали неправильные выводы. Как Вы и сами верно выразились "Конкретно эта цитата относится только к объектам", а остальное Вы от себя додумали. Лично я впервые такой метод конструктора увидел в материалах Евгения Гилева, надо будет его тоже предупредить)
15. slazzy 42 13.03.15 13:20 Сейчас в теме
(11)
внимательнее читайте сообщения :) в курсах Гилева данный метод создания объектов используется при динамическом создании объекта, тип которого изначально не известен, в 99.99% случаях это не так и всё известно заранее. Вам нужен запрос, вы делаете запрос.
Найдите в любой типовой 1С конфигурации, где бы они создавали запрос как Вы.

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

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


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

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


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

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

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

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

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

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


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

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

3. spetzpozh 13.03.15 08:26 Сейчас в теме
Задач в сборнике сколько, штук 140 всех вместе? Держите нас в курсе :))
Betis; dmpas; +2 Ответить
5. Betis 26 13.03.15 08:37 Сейчас в теме
(3) spetzpozh, буду стараться)
Оставьте свое сообщение