Имя: Пароль:
1C
1С v8
Заполнение строк Документа из справочника
0 YDen
 
24.02.23
17:30
Здравствуйте.
Подскажите пожалуйста. Не плотно связан с 1с. Знаю 7.7. Решил немного переучится на 8.3. Простая задача. Есть документ с ТЧ. Есть справочник. В документе один реквизит тип Справочник. При выборе одной записи идет заполнение остальных полей в ТЧ документа. Код в клюшках накидал, нужно подобное на 8.3:

Процедура ЗаполнениеСтроки()
    Если Блюдо.Выбран()=1 Тогда
        С=СоздатьОбъект("Справочник.Блюда");
        С.ВыбратьЭлементы();
        Пока С.ПолучитьЭлемент()=1 Цикл
            Если С.ТекущийЭлемент()=Блюдо Тогда
                Выход=С.Выход;
                Цена=С.Цена;
                Калорийность=С.Калорийность;
                Белки=С.Белки;
                Жиры=С.Жиры;
                Углеводы=С.Углеводы;
                Прервать;
            КонецЕсли;    
        КонецЦикла;
    КонецЕсли;
КонецПроцедуры

Плиз в двух словах, как подобное в 8.3 реализовать?

благодарю
1 Жан Пердежон
 
24.02.23
18:49
(0) ты реально так на 7.7 писал?
2 YDen
 
24.02.23
18:55
(1) Да.
3 YDen
 
24.02.23
18:56
(1) Я с типовыми вообще дело не имел. Самопальные на клюшках. И поскольку постольку.
4 FIXXXL
 
24.02.23
19:02
(0) в 8.3 управляемые формы? значения типа Выход, Цена и т.п. на форме надо менять потом или только отобразить надо?
5 YDen
 
24.02.23
19:04
(4) менять
6 Злопчинский
 
24.02.23
19:09
(3) это трындец...
С.ВыбратьЭлементы();
        Пока С.ПолучитьЭлемент()=1 Цикл
            Если С.ТекущийЭлемент()=Блюдо Тогда
.
убрать нахрен, использовать
.
С.НайтиЭлемент(Блюдо);
Выход=С.Выход;
.
представляю какой трэш будет порожден в восьмерке пиателями, которые на 77 хрень пишут ;-)
7 YDen
 
24.02.23
19:12
(6) Мне на 8 нужно.
Как могу так и пишу. Я же вам не втюхиваю конфигурации. И вы о моей мотивации не осведомлены.
8 FIXXXL
 
24.02.23
19:13
(5) ну тогда после выбора значения Блюдо получать запросом значения реквизитов выбранного и заполнять реквизиты ТЧ документа
лучше делай функцию НаСервереБезКонтекста с передачей параметра Блюдо
9 YDen
 
24.02.23
19:18
(8) Я сейчас 8.3 впервые запустил :)
Суть: я не 1с програмер. Работаю в школе. Приходилось на клюшках писать. Сейчас в мои обязанности входит размещение меню столовой на сайте мониторинга питания. Задрало. Пробовал на 77 написать - сделал, но нужны xlsx файлы с печатной формы. Как понял на клюшках с этим беда. Поэтому начал делать на 8.3.
10 Злопчинский
 
24.02.23
19:19
(7) я понимаю если писать что-то сложное. архитектурное. там где мотивация играет роль в хорошую тили не очень сторону. но это ж ваще - основы. это даже придумывать не надо. это тупо знать надо. основные методы работы со справочником. Это же не восьмерка где дока книжек в метр высотой.
.
но раз работает и мотивация удовлетворяет - ну и ок. главное в коде следы оставить, чтобы понятно было кто написал.
11 Злопчинский
 
24.02.23
19:22
(9) сделал, но нужны xlsx файлы с печатной формы
- в совсем недавноей ветке это все разжевали.
если совсем никак - сохранить 77 штатно xls и из под 77 через обычный эксель пересохранить в xlsx.
.
https://infostart.ru/public/1026032/
Таб.Записать(ИмяФайла, 0);// - MOXEL
Таб.Записать(ИмяФайла, 1);// - XLSX
Таб.Записать(ИмяФайла, 2);// - HTML
Таб.Записать(ИмяФайла, 3);// - PDF
12 YDen
 
24.02.23
19:25
(10)
(11)
О мотивации выше написал. Завстоловой пересылает мне экселевские файлы для мониторинга. Задрало их постоянно править. Поэтому хочу на 8.3 поднять конфигурацию из нескольких справочников, одного документа. Ну может до кучи научусь по фтп публиковать печатную форму в xlsx :)
Пересохранять из xls в xlsx - тогда проще вообще не лезть ни в 7 ни в 8.
13 Жан Пердежон
 
24.02.23
19:36
(12) мотивация тут причем?
в (0) говнокод за который увольнять надо
14 YDen
 
24.02.23
19:40
(13) Вы что ли уволите?
15 Мимохожий Однако
 
24.02.23
20:04
ОФФ: Троллинг какой-то
16 Мимохожий Однако
 
24.02.23
20:07
Проще сразу в Excel сделать несколько таблиц и из них лепить нужные файлы.
17 YDen
 
24.02.23
20:24
(8) Ок, благодарю. За это зацеплюсь.
18 Злопчинский
 
24.02.23
20:40
(12) "Пересохранять из xls в xlsx"
ну так это программно делается в клюшках.
19 Злопчинский
 
24.02.23
20:41
в (11) вк для 77 котораz позволяет записывать в xlsx
хотя какоая нафиг разница - любой эксель который понимает xlsx прочитает и xls
20 YDen
 
25.02.23
07:35
(19) Где эту компоненту взять?
инфостарт подписка 27 косарей.
21 hockeyist
 
25.02.23
07:46
(6) НайтиЭлемент тут зачем?
22 Злопчинский
 
25.02.23
09:09
(21) +100
можно вообще без найтиэлемент если для блюдо записывать ничего не надо
23 Злопчинский
 
25.02.23
09:12
(20) не дай бог так оголодать... ;-)
http://forums.kuban.ru/f1040/-----_poproshajka_------8264573-16.html
24 hockeyist
 
25.02.23
09:56
(20) Ну прям вот 27! 8500 минимальная цена
25 YDen
 
25.02.23
19:41
Все же делаю на 8.3.
ТЗ:
1. Справочник без ТЧ "НомерРецепта" с реквизитами Наименование и Блюдо.
2. Документ с ТЧ. В ТЧ реквизиты Рецепт (тип Справочник.НомерРецепта) и НазваниеБлюда (тип Строка)
Нужно при выборе в документе номера рецепта автоматом заполнялся реквизит НазваниеБлюда.
На одном примере сварганил. Где ошибка, плиз? Не заполняет поле НазваниеБлюда.

// служебная функция получения значения реквизита объекта (выполняется на сервере)
&НаСервере
Функция ЗначениеРеквизита(Объект,ИмяРеквизита);
Возврат Объект[ИмяРеквизита];
КонецФункции

// обработчик события "ПриИзменении" поля "Контрагент" в табличном поле "Контрагенты"
&НаКлиенте
Процедура ТабличнаяЧасть1РецептПриИзменении(Элемент)
ТекДанные = Элементы.ТабличнаяЧасть1.ТекущиеДанные;
ТекДанные.НазваниеБлюда = ЗначениеРеквизита(ТекДанные.Блюдо,"НазваниеБлюда");
КонецПроцедуры

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

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
ОбновитьДанныеКолонкиБлюдо();
КонецПроцедуры

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
ОбновитьДанныеКолонкиБлюдо();
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
ОбновитьДанныеКолонкиБлюдо();
КонецПроцедуры

Благодарю
26 Soul771
 
25.02.23
20:36
(25) в Конфигураторе поставьте точку останова на строке
ТекДанные.НазваниеБлюда = ЗначениеРеквизита(ТекДанные.Блюдо,"НазваниеБлюда");
Запустите отладчик (сверху меню Отладка), посмотрите, что попадает в ТекДанные (пр кн мыши на ТекДанные - ВычислитьВыражение)
27 Glacial
 
25.02.23
21:17
Смотри, что ответил ChatGPT на твой вопрос:

Для реализации данной задачи на платформе 1С:Предприятие 8.3 можно воспользоваться следующим алгоритмом:

Добавить реквизит типа Справочник в ТЧ документа.
Создать обработчик события "При изменении" этого реквизита, который будет заполнять остальные поля ТЧ документа.
В обработчике получить ссылку на выбранный элемент справочника, используя методы СправочникСсылка() и ВыбранныйЭлемент() объекта формы.
Получить необходимые значения из выбранного элемента справочника, используя методы объекта СправочникСсылка().
Установить значения полученных полей в соответствующие реквизиты ТЧ документа.
Пример кода обработчика события "При изменении" реквизита типа Справочник в ТЧ документа:

&НаКлиенте
Процедура НазваниеРеквизита_ПриИзменении(Элемент, Событие)
    // Получаем ссылку на выбранный элемент справочника
    Справочник = Элемент.СправочникСсылка("НазваниеСправочника").ВыбранныйЭлемент();
    
    // Получаем необходимые значения из выбранного элемента справочника
    Выход = Справочник.Выход;
    Цена = Справочник.Цена;
    Калорийность = Справочник.Калорийность;
    Белки = Справочник.Белки;
    Жиры = Справочник.Жиры;
    Углеводы = Справочник.Углеводы;
    
    // Устанавливаем значения полученных полей в соответствующие реквизиты ТЧ документа
    Элемент.Поле1 = Выход;
    Элемент.Поле2 = Цена;
    Элемент.Поле3 = Калорийность;
    Элемент.Поле4 = Белки;
    Элемент.Поле5 = Жиры;
    Элемент.Поле6 = Углеводы;
КонецПроцедуры

В данном примере "НазваниеРеквизита" - это название реквизита типа Справочник в ТЧ документа, а "НазваниеСправочника" - это название справочника, из которого выбирается запись. Также необходимо заменить "Поле1", "Поле2", "Поле3" и т.д. на названия соответствующих реквизитов ТЧ документа, которые будут заполняться значениями из выбранной записи справочника.
28 YDen
 
25.02.23
21:24
(26) Вычислить выражение - неактивно.

сенк
29 YDen
 
25.02.23
21:25
(27) Я пробовал сам через бота прогнать, но видимо запрос неточный был.

сенк
30 YDen
 
25.02.23
21:35
(27) Ругань:
Метод объекта не обнаружен (СправочникСсылка)
{Документ.Меню.Форма.ФормаДокумента.Форма(55)}:    Справочник
31 YDen
 
25.02.23
21:48
(27) Код:
Процедура РецептПриИзменении(Элемент, Событие)
    // Получаем ссылку на выбранный элемент справочника
    Справочник = Элемент.СправочникСсылка("НомерРецепта").ВыбранныйЭлемент();
    
    // Получаем необходимые значения из выбранного элемента справочника
    Блюдо = Справочник.Блюдо;
    Выход = Справочник.Выход;
    Цена = Справочник.Цена;
    Калорийность = Справочник.Калорийность;
    Белки = Справочник.Белки;
    Жиры = Справочник.Жиры;
    Углеводы = Справочник.Углеводы;
    
    // Устанавливаем значения полученных полей в соответствующие реквизиты ТЧ документа
    Элемент.НазваниеБлюда = Блюдо;
    Элемент.Выход = Выход;
    Элемент.Цена = Цена;
    Элемент.Калорийность = Калорийность;
    Элемент.Белки = Белки;
    Элемент.Жиры = Жиры;
    Элемент.Углеводы = Углеводы;
КонецПроцедуры
32 Soul771
 
26.02.23
00:53
(27) - Вычислить выражение будет активно в режиме отладки, когда нужное выражение выделили мышкой и нажали пр кн мыши. Т.е сначала ставите точку останова (щелкаете мышкой слева от нужной строки, появляется красный кружок -точка), далее выбираете в меню сверху Отладка - Продолжить отладку - запускается режим Предприятие, где проигрываете ситуацию до момента срабатывания останова (вводите данные в ваш документ) - После выбираете нужное выражение, выделяете, щелкаете пр кн мыши ВычислитьВыражение - смотрите, какое значение на данном шаге туда попало.
Если я правильно воспроизвела вашу ситуацию,то в ТекДанные не будет Блюдо,  будет НазваниеБлюда, Рецепт, НомерСтроки, ИсходныйНомерСтроки. Дальше посмотрите, что попадает в Объект. Это чтобы быстрее увидеть-понять, что за данные на каждом шаге кода, те ли, что вы ожидали увидеть.
33 Aleksey
 
26.02.23
01:16
Пиши на обычных формах, там ближе к 7-ке. Не надо бегать туда сюда на сервер
34 YDen
 
26.02.23
08:07
(32) Сенк.
ВычислитьВыражение так же неактивно.
Но по аналогии с клюшками я использовал Сообщить для понятия где код выполняется, а где нет. Итог: ни разу вася не появился.

// служебная функция получения значения реквизита объекта (выполняется на сервере)
&НаСервере
Функция ЗначениеРеквизита(Объект,ИмяРеквизита);
Возврат Объект[ИмяРеквизита];
сообщить("вася");

КонецФункции

// обработчик события "ПриИзменении" поля "Контрагент" в табличном поле "Контрагенты"
&НаКлиенте
Процедура ТабличнаяЧасть1РецептПриИзменении(Элемент)
ТекДанные = Элементы.ТабличнаяЧасть1.ТекущиеДанные;
сообщить("ТекДанные");
ТекДанные.НазваниеБлюда = ЗначениеРеквизита(ТекДанные.Блюдо,"НазваниеБлюда");
КонецПроцедуры

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

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

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
ОбновитьДанныеКолонкиБлюдо();
сообщить("вася");

КонецПроцедуры

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
ОбновитьДанныеКолонкиБлюдо();
сообщить("вася");

КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
ОбновитьДанныеКолонкиБлюдо();
сообщить("вася");

КонецПроцедуры
35 Soul771
 
26.02.23
10:08
(34) - выложите на какой-нибудь ресурс скрин, пожалуйста, как у вас выглядит момент отладки, когда ВычислитьВыражение не активно. И подробно напишите, куда нажимаете с начала отладки до конца. Отладчик на будущее очень сильно пригодится.
Вы пока смотрите только процедуру ТабличнаяЧасть1РецептПриИзменении(Элемент), другие на этом шаге не особо нужны. Вася не появился,потому что на строке
ТекДанные.НазваниеБлюда = ЗначениеРеквизита(ТекДанные.Блюдо,"НазваниеБлюда");
в ТекДанные не содержится Блюдо, хочу, чтобы вы через отладчик увидели, что есть ТекДанные, и почему код на этом месте вываливается (кст, в режиме Предприятие сообщение об ошибке появляется, из него можно перейти в Конфигуратор, сразу увидев, на каком месте спотыкнулся код)
36 YDen
 
26.02.23
10:16
(35) Я верно делаю, что выше код разместил в модуле формы документа?
37 Soul771
 
26.02.23
10:26
(36) да
38 Soul771
 
26.02.23
10:30
(36)- событие ПриИзменении привязали через форму? Если вдруг только код написали в модуле формы, то надо связать: в самой форме выделяете нужный элемент, щелкаете пр кн мыши - события - выбираете нужное событие.
39 Soul771
 
26.02.23
10:32
(36) - и точку останова вы ставите прямо на той строке, не после нее?
40 YDen
 
26.02.23
10:47
(38) Изначально сделал.
41 YDen
 
26.02.23
10:49
(39) Да.
Но почему сообщить("ТекДанные") в процедуре при изменении не срабатывает? Как будто сюда она даже не заходит.

// обработчик события "ПриИзменении" поля "Контрагент" в табличном поле "Контрагенты"
&НаКлиенте
Процедура ТабличнаяЧасть1РецептПриИзменении(Элемент)
ТекДанные = Элементы.ТабличнаяЧасть1.ТекущиеДанные;
сообщить("ТекДанные");
ТекДанные.НазваниеБлюда = ЗначениеРеквизита(ТекДанные.Блюдо,"НазваниеБлюда");
КонецПроцедуры
42 YDen
 
26.02.23
10:49
(39) да
43 YDen
 
26.02.23
10:51
(39) Вроде пошло.
Значение выдает ""
44 YDen
 
26.02.23
10:52
Это:
ТекДанные.НазваниеБлюда = ЗначениеРеквизита(ТекДанные.Блюдо,"НазваниеБлюда");
45 Soul771
 
26.02.23
11:04
(43) - отлично! но почему у вас выдает значение ""?.. у вас не выходит сообщение об ошибке, что поле объекта не обнаружено? ТекДанные развернули (через плюсик), посмотрели, что там?
(41) - ТекДанные - это ДанныеФормыЭлементКоллекции
46 YDen
 
26.02.23
11:06
Структура:
https://ibb.co/K7NFDBk
47 YDen
 
26.02.23
11:10
(45) Ошибок не выдает.
https://ibb.co/MpXdQHF
ТекДанные - это ДанныеФормыЭлементКоллекции - это вообще не понял
48 Soul771
 
26.02.23
11:19
(46), (47) - спасибо за скрины!
вот оно в чем дело,вы смотрите через ВычислитьВыражение, что попадает в ТекущиеДанные.НазваниеБлюда. Но в тот момент, когда срабатывает точка останова, операция присваивания еще не произошла, т.е. отладчик остановил исполнение кода до выполнения этой строчки. Т.к. ранее в НазваниеБлюда у вас еще ничего не записано, то и выдается значение "", т.к. тип данных - Строка. Выделите просто ТекДанные, посмотрите, что оно из себя представляет. И можете дальше смотреть, что пишете справа от знака = , т.е. то, что пытаетесь передать в ТекущиеДанные.НазваниеБлюда.
(47) - посмотрите, как работать с этим типом данных в синтакс-помощнике (через поиск в нем можете найти)
49 Мимохожий Однако
 
26.02.23
12:24
(47) Шагни на шаг дальше и всё увидишь.
Про тип данных ДанныеФормыЭлементКоллекции можно почитать в документации или в СП
50 YDen
 
26.02.23
13:01
&НаКлиенте
Процедура ТабличнаяЧасть1РецептПриИзменении(Элемент)
ТекДанные = Элементы.ТабличнаяЧасть1.ТекущиеДанные;
сообщить("ТекДанные");
ТекДанные.НазваниеБлюда = ЗначениеРеквизита(ТекДанные.Блюдо,"НазваниеБлюда");

КонецПроцедуры

Ругань:
{Документ.Меню.Форма.ФормаДокумента.Форма(14)}: Поле объекта не обнаружено (Блюдо)
ТекДанные.НазваниеБлюда = ЗначениеРеквизита(ТекДанные.Блюдо,"Блюдо");
51 butterbean
 
26.02.23
13:13
(50) реквизит Блюдо не выведен на форму скорее всего
52 Soul771
 
26.02.23
13:19
(50) - смотрите, если выделить ТекущиеДанные, то в ВычислитьВыражение будет вот так: https://ibb.co/722QSCK
Нет там Блюдо.... Блюдо у вас в реквизитах справочника НомерРецепта, а в ТекущиеДанные попадает то, что в данном случае относится к ДанныеФормыЭлементКоллекции. То, что вы на форму документа вывели, с чем в данный момент работаете..
53 YDen
 
26.02.23
13:21
(52) Плиз, как это исправить? Для особо тупых :)
54 Soul771
 
26.02.23
13:32
(53) - может быть, вот так:
в процедуре на клиенте
ТекДанные.НазваниеБлюда = ЗначениеРеквизита(ТекДанные.Рецепт,"Блюдо");
или же в ТекДанные.Рецепт и содержится то, что вам нужно?
55 YDen
 
26.02.23
14:08
(54) Я говорил, что вы Красотка? Говорю! Большое спасибо. Взлетает потихоньку.
Я как котенок тыкался. В 8.3 все новое. Да я и профессионально 77 не занимался.
Почему выбрал именно 8.3? Во-первых, свежая платформа. Во-вторых, более удобный для программера и пользователя интерфейс. Я когда на клюшках эту задачу решал, с ужасом представлял, как я буду объяснять 60-летнему завстоловой какие кнопки тыкать и где находится на клавиатуре Insert. В 8.3 все интуитивно понятно и крупно :)
У меня задача следующая. Средняя школа. Уже год как выкладываем ежедневное меню на сайт школы - xlsx файл по шаблону. Только xlsx, требования к колонкам и данным - робот централизованно собирает эти выгрузки и анализирует, потом дают пиз...й. Моя роль: физически забрать этот файл (другой способ завстоловой не признает - религия), и так как завстоловой может понатыкать в первые попавшиеся столбцы данные, да еще и сократить их, мне приходится каждый раз перелопачивать этот файл и затем по фтп закачать на сайт. Надоело. Реально. Поэтому и мучаю 1с.
Что хочу: меню завстоловой заполняет сама, далее система формирует печатную форму и сохраняет ее в xlsx, затем по фтп кидает по нужному пути. И меня никто не тревожит, и данные по нужным столбцам и ячейкам и без сокращений (ой как любит наша ставить в цене р. или руб, еще и копеек добавит - сразу ошибка).
56 YDen
 
26.02.23
14:09
&НаКлиенте
Процедура ТабличнаяЧасть1РецептПриИзменении(Элемент)
ТекДанные = Элементы.ТабличнаяЧасть1.ТекущиеДанные;
//сообщить("ТекДанные");
ТекДанные.НазваниеБлюда = ЗначениеРеквизита(ТекДанные.Рецепт,"Блюдо");
ТекДанные.Выход = ЗначениеРеквизита(ТекДанные.Рецепт,"Выход");
ТекДанные.Цена = ЗначениеРеквизита(ТекДанные.Рецепт,"Цена");
ТекДанные.Калорийность = ЗначениеРеквизита(ТекДанные.Рецепт,"Калорийность");
ТекДанные.Белки = ЗначениеРеквизита(ТекДанные.Рецепт,"Белки");
ТекДанные.Жиры = ЗначениеРеквизита(ТекДанные.Рецепт,"Жиры");
ТекДанные.Углеводы = ЗначениеРеквизита(ТекДанные.Рецепт,"Углеводы");

//ТекДанные.НазваниеБлюда = ЗначениеРеквизита(ТекДанные.Блюдо,"НазваниеБлюда");

КонецПроцедуры
57 YDen
 
26.02.23
14:14
Еще вопрос, от тугодума.
В ТЧ документа в поле Рецепт выбираю Все и появляется окно справочника, но видно только наименование. Туда бы еще реквизит Блюдо воткнуть - счастье не было бы предела:
https://ibb.co/nnCTkBB

Хота в форме списка справочника этот реквизит в наличии:
https://ibb.co/FKTqj1c

сенк
58 АгентБезопасной Нацио
 
26.02.23
14:15
(56) Прочитайте про ЗаполнитьЗначениеСвойств()
59 Soul771
 
26.02.23
14:23
(55) - благодарю за добрые слова)
да, приучить-уговорить юзверей порой дело морально непростое.. пока они за косяки не отвечают, кто-то забивает и продолжает недоуменно делать как ему удобно, как привык.. к счастью, не все такие встречаются.
(57) добавьте в справочник форму выбора (выделяете Формы, жмете на плюсик, выбираете желаемую, далее расставляете галочки, какие реквизиты хотите вывести на форму)
(58) +
60 YDen
 
26.02.23
14:36
(59) Ок, форма выбора тоже взлетела. Я не так безнадежен.

Благодарю.
А слова выше были искренние.
61 Soul771
 
26.02.23
14:39
(60) - рада, что у вас получается) Обращайте внимание на тип данных - и в отладчике, и в синтакс-помощнике, выручает разобраться. Вы молодец, взялись за автоматизацию рутины, за новый язык. Все получится, освоите потихоньку. может, и где-то еще в жизни пригодится, если понравится.  Успехов вам и добра!
62 YDen
 
26.02.23
14:47
(61) Еще снаглею :)
Как реализовать на 8.3 аналог процедуры из 77 ВводНового для документа, мне для заполнения реквизита:

Процедура ВводНового()
    Организация = СокрЛП(Константа.Организация);
    
КонецПроцедуры
63 Soul771
 
26.02.23
15:26
(62)- как один из вариантов, можно в обработчике события формы ПриСозданииНаСервере написать такое условие: Если Параметры.Ключ.Пустая() Тогда ...
64 Soul771
 
26.02.23
15:31
(63) - нет лучше использовать событие формы ПриОткрытии
65 Злопчинский
 
26.02.23
16:08
как-то это мне мутно...
а если документ создается не в форме документа, а где-то программно..? что будет в реквизите документа "Организация"..?
66 Soul771
 
26.02.23
16:22
(65) -при программном создании, предполагаю, можно использовать Если Объект.Ссылка.Пустая() ...
либо
ДокументОбъект = РеквизитФормыВЗначение(«Объект»);
Если ДокументОбъект.ЭтоНовый() Тогда ...
это для УФ, а в обычном приложении было, вроде  ЭтоНовый() ...
67 АгентБезопасной Нацио
 
26.02.23
17:00
(65) Ты вот не восьмерочник, а прав. Но ОбработкаЗаполнения работает только в интерактивном режиме. Программно создаешь - программно и  заполняй.
(64) в мурзилке прямо написано: "В обработчике события ПриОткрытии нужно делать только то, что на сервере сделать невозможно."
68 Soul771
 
26.02.23
17:58
(67)- вы правы)
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    Если Параметры.Ключ.Пустая() Тогда

      Объект.Организация = СокрЛП(Константы.Организация.Получить());
...
69 АгентБезопасной Нацио
 
26.02.23
19:15
(68) "Семён Семёёёныч!!!"©
СокрЛП() ссылку? зачем?
70 Soul771
 
26.02.23
19:57
(69) - потому что в примере,сделанном на коленке, возвращаемое значение имеет тип Строка)
71 Злопчинский
 
26.02.23
20:33
(67) а смысл в этом снеговике тогда?
я и в клюшках могу в форме документа написать одно, а в программном создании - другое.
а хочется же КРАСОТЫ! в каком нить "менеджере справочника" (хз как это правильно) чтобы отрабатывал код создания нового элемента ОБЩИЙ для любого вариант/метода создания нового элемента. а уже в форме можно ДОБАВИТЬ или ЗАМЕСТИТЬ "сверху" своей частностью для формы или своей частностью для программного создания.
.
я как-то так думал что в снеговике устроено...
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс