Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: В запросе не выводится реквизит справочника

Помогите разобраться. В запросе по справочнику и документу не выводится реквизит справочника. Только начинаю программировать в 1 с.
    ТекстЗапроса = " 
    |Обрабатывать НеПомеченныеНаУдаление;
    |ОбрабатыватьДокументы Проведенные;
    |Номенклатура  = Справочник.Номенклатура.ТекущийЭлемент,
    |        Документ.ПоступлениеТМЦ.Номенклатура;
    |ДатаСозд      =Справочник.Номенклатура.ДатаСоздания;  
    |ДатаПервогоПоступления =Документ.ПоступлениеТМЦ.ДатаДок;
    |Группировка Номенклатура;
    |Условие (ДатаСоздания>ДатаС);
    |Условие ((ТекущаяДата() - ДатаПервогоПоступления)<31);";
Ответ: Не выводится реквизит дата создания, точнее выдает в этом поле пустое значение.
Вопрос: Получить реквизит справочника на дату (не периодический)

День добрый!
Как лучше получить значение реквизита справочника на дату?
Реквизит не периодический (и не предлагать).

Интересует сам алгоритм.

Спасибо.
Ответ: Срез последних по справочнику в 7.7?
Вопрос: Подстановка значение реквизита справочника в ТЧ Документа

Здорова.Есть справочник "Компьютеры" с реквизитами "Наименование" и "ИнвНомер". Есть документ. В нём есть ТЧ, с реквизитами: ОС, ИнвНомер. В реквизите ОС, установлено значение "СправочникСсылка.Компьютеры". Нужно: при заполнение этого реквизита (заполняется значение из реквизита "Наименование" справочника "Компьютеры", ) что бы автоматически заполнялось значение реквизита ИнвНомер ТЧ Документа из реквизита "ИнвНомер" справочника "Компьютеры" . Пробовал так :
1C
1
2
3
4
5
6
СтрокаТабличнойЧасти = Элементы.ТабличнаяЧасть1.ТекущиеДанные;
    
    Если СтрокаТабличнойЧасти.ОС=СправочникСсылка.Компьютеры ТОГДА  
    СтрокаТабличнойЧасти.ИнвНомер=Справочник.Компьютеры.Объект.ИнвНомер
        
    КонецЕсли;
Выдаёт ошибку. Подозреваю, что неправильно получаю реквизиты справочника комьютеры. Кто может помочь?
Ответ: SHIFT_969, спасибо огромное!
Вопрос: Обеспечение уникальности реквизита справочника.

Доброго дня!
8.3.6

Прошу помощи в решении задачи обеспечения уникальности реквизита справочника.
Есть справочник Штрихкоды (Штрихкод - строка()15, ТипШтрихкода - ПланВидовХарактеристик.ТипыШтрихкодов, прочие реквизиты...). Необходимо обеспечить уникальность реквизита Штрихкод при многопользовательской работе. Элементы справочника в большинстве своем создаются массово обработкой (от 300 штук), запускать процесс создания могут несколько пользователей одновременно.

Алгоритм создания каждого элемента:
1. Создаем элемент справочника.
2. Запросом получаем текущий максимальный Штрихкод.
3. Присваиваем новый штрихкод созданному в 1 элементу (НовыйШтрихкод = Штрихкод + 1)
4. Записываем элемент справочника.
5. В событии ПередЗаписью запросом контролируем уникальность реквизита Штрихкод, в случае, если он не уникален - Отказ (необходимо в том случае, если элемент создавался вручную, а не обработкой)

Проблема.
Если несколько пользователей запускают создание штрихкодов одновременно или с небольшим интервалом, возникает такая ситуация:
1. Два пользователя одновременно получили запросом текущий максимальный штрихкод.
2. Вычислили новый штрихкод.
3. Записали каждый свой элемент с одинаковым штрихкодом.
4. У того пользователя, который записал элемент первым проблем не возникло. Другой же пользователь в обработчике ПередЗаписью получил отказ, т.к. его штрихкод уже содержится в справочнике.

Прошу тех, кто решал подобную задачу поделиться опытом, а тех кто не решал - идеями.

Мои мысли:
Вычисление нового штрихкода и запись элемента делать в транзакции, и в начале этой транзакции заблокировать справочник целиком для чтения другим транзакциям.
Не могу придумать механизм блокировки справочника целиком.
Изучал объект БлокировкаДанных, но в документации не нашел примеров блокировки именно справочника целиком. Если есть те, кто разбирался с этим объектом, подскажите как решить задачу с помощью него.
Ответ: () Спасибо и за эту идею.
Вопрос: Обращение к реквизиту справочника программно

Здарова. Ситуация: создал справочник, в нём реквизиты. В справочнике ФормаЭлемента создал команду, отобразил её на форме справочника. Вопрос: как мне из модуля команды, записать значение из реквизита справочника, которое ввел пользователь. Например-нужно сложить 2 числа. Что бы по нажатию на кнопку, числа которые введены в 2 реквизита, сложились, и результат отобразился в третьем реквизите. Гугл ничего не нашёл. 1С 8.2
Ответ: SHIFT_969, Спасибо!!!!!!!Даже не знаю, как я так...
Вопрос: Получение значения реквизита справочника в документ

Добрый день, есть вопрос
Как сделать чтобы реквизит табличной части документа получал данные из реквизита справочника.
Т.е. при изменении "ФИО" в табличной части документа подставлялись значения (ДатаРождения, Должность)из справочника (Сотрудники)

Есть справочник Сотрудники, реквизиты "Должность", "Дата рождения"

Есть документ в нем табличная часть "Налоги" и его реквизиты "ФИО" "Должность" "ДатаРождения"

если просто ссылаться через форму на значения справочника то в документе выводится визуально и ДатаРождения, и Должность, но на печати эти поля пустые и при установке условий они ни как не считываются, а как будто пустые

Прошу в поиск не посылать, т.к. пробывал уже много вариантов в т.ч. программно через функции

платформа 8.2
Ответ: Спасибо огромное!!! сделал!!!
Код 1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
&НаСервереБезКонтекста
Функция ПолучитьЗначениеРеквизитаНаСервере(ИмяОбъекта, ИмяРеквизита)
  Возврат ИмяОбъекта[ИмяРеквизита];
КонецФункции
 
&НаКлиенте
Процедура МатериалыМатериалПриИзменении(Элемент)
    СтрокаТабличнойЧасти=Элементы.Материалы.ТекущиеДанные;
    СтрокаТабличнойЧасти.ЕдиницыИзмерения=ПолучитьЗначениеРеквизитаНаСервере(СтрокаТабличнойЧасти.Материал,"ЕдиницыИзмерения");
КонецПроцедуры
 
&НаКлиенте
Процедура ФИОПриИзменении(Элемент)
    Объект.Должность = ПолучитьЗначениеРеквизитаНаСервере(Объект.ФИО,"Должность");
Объект.Подразделение = ПолучитьЗначениеРеквизитаНаСервере(Объект.ФИО,"Подразделение");
КонецПроцедуры
Добавлено через 2 минуты
Не подскажешь? Сделал конструктором печати форму, все нормально работало. Сейчас решил переделать, кнопка в форме стоит в конфе, а запускаю 1с ее нет в доке..
Вопрос: Управляемые формы, а также доп. реквизиты справочника

Здравствуйте!
Я наконец-то начал работать с управляемыми формами, а также доп. реквизитами справочника, которые были введены в режиме предприятие.
1С:Предприятие 8.3 (8.3.8.2054), 1С:Комплексная автоматизация 2 (2.2.3.196).
К сожалению, столкнулся с проблемой и не смог нагуглить её решение.
Суть такова - есть внешняя обработка, в ней пользователь выбирает номенклатуру, после чего другие поля этой обработки должны автоматически заполниться доп. реквизитами этой номенклатуры. Споткнулся в самом начале - пытаюсь запросом получить эти доп. реквизиты.

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
&НаКлиенте
Процедура НоменклатураПриИзменении(Элемент)
    
    
    ДопРеквизиты = ЗапросДопРеквизитов(Объект.Номенклатура);
    
КонецПроцедуры
 
 
&НаСервере
Функция ЗапросДопРеквизитов(Номенклатура)
    
    ЗапросДопРеквизитов = Новый Запрос();
    ЗапросДопРеквизитов.Текст = "ВЫБРАТЬ
                                |   НоменклатураДополнительныеРеквизиты.Ссылка,
                                |   НоменклатураДополнительныеРеквизиты.Свойство,
                                |   НоменклатураДополнительныеРеквизиты.Значение,
                                |   НоменклатураДополнительныеРеквизиты.ТекстоваяСтрока
                                |ИЗ
                                |   Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
                                |ГДЕ
                                |   НоменклатураДополнительныеРеквизиты.Ссылка = &Номенклатура";
                                
    ЗапросДопРеквизитов.УстановитьПараметр("Номенклатура",Объект.Номенклатура); 
    
    РезультатЗапросДопРеквизитов = ЗапросДопРеквизитов.Выполнить().Выгрузить();
 
       Возврат РезультатЗапросДопРеквизитов;
 
 
конецфункции

Выдает

"{ВнешняяОбработка.ПечатьЭтикеток.Форма.Форма.Форма(11)}: Ошибка при вызове метода контекста (ЗапросДопРеквизитов)
ДопРеквизиты = ЗапросДопРеквизитов(Объект.Номенклатура);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: ret Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable'"



Пожалуйста, помогите!

Добавлено через 9 минут
В 28 строке "Возврат РезультатЗапросДопРеквизитов;" возвращается таблица значений. Пробую на клиенте обозначить переменную "ДопРеквизиты" как "Новый ТаблицаЗначений" - программа ругается, что не знает, что такое "ТаблицаЗначений". Пробую менять контекст с "НаКлиенте" на "НаСервере" - тогда уже не ругается, но и отладчик перестает работать.
Ответ: Спасибо за ответ!

Разместите на форме табличную часть аналогичной структуры
Но зачем пользователю эта табличная часть? Только лишнее нагромождение формы обработки.

Добавлено через 6 минут
Попробую просто создать таб. часть обработки (без вынесения её на форму) и в неё загрузить результат.

Так и получилось! Спасибо!
Вопрос: Найти По реквизиту справочника

Как найти по реквизиту справочника, если реквизит является ссылкой на другой справочник?

Справочник1 (Код,Наименование,Сотрудник)
Сотрудники  (Код,Наименование,Должность)
и Дан табельный номер.

Если Справочник1.НайтиПоРеквизиту("Справочник1.Сотрудник.Код",ТабНомер,1) = 1 Тогда
Ответ: Вкратце как то так:
ТвойСотрудник = Сотрудники.НайтиПоКоду(ТабНомер)
ТвойСпр =Справочник1.НайтиПоРеквизиту("Сотрудник",ТвойСотрудник.ТекущийЭлемент())
Ну или запрос.
Вопрос: Хранение цвета в реквизите справочника

Добрый день
Подскажите как сохранить цвет в реквизите справочника?
кроме как 3 реквизитов R,G,B в голову ничего не лезет

PS
Идея в том,что бы пользователь указывал цвет элемента справочника,и потом отчет раскрашивался в этот цвет.
Ответ: () пример чего?
получи R,G,B от цвета с типом Цвет
Вопрос: Как обратиться к реквизиту справочника в модуле менеджера

Есть справочник Договоры Контрагентов в нем создан макет active document и команда. Подскажите как получить реквизит справочника?


1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// Модуль Менеджера
 
Процедура ДоговорСПоставщиком(ТабДок, Ссылка)Экспорт
    
ДоговорСПоставщиком =  ПолучитьМакет("ДоговорСПоставщиком");
MSWord = ДоговорСПоставщиком.Получить();
 
Попытка
    Документ = MSWord.Application.Documents (1);
    Документ.Activate ();
    
    Замена = Документ.Content.Find;
    Замена.Execute("<Nomerdogovora>", Ложь, Истина, Ложь, , , Истина, , Ложь, Объект.НомерДоговора);
    
    Замена = Документ.Content.Find;
    Замена.Execute("<Data>", Ложь, Истина, Ложь, , , Истина, , Ложь,Объект.ДатаДоговора);
    
    Замена = Документ.Content.Find;
    Замена.Execute("<NameOrg>", Ложь, Истина, Ложь, , , Истина, , Ложь, """" + Объект.Владелец + """");
    
MSWord.Application.Visible = Истина;
MSWord.Activate ();
 
Исключение
     Сообщение = Новый СообщениеПользователю();
     Сообщение.Текст = ОписаниеОшибки();
     Сообщение.Сообщить();
     MSWord.Application.Quit();
КонецПопытки;
КонецПроцедуры
 
//Модуль Команды
 
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
     ДоговорСПоставщиком(ТабДок, ПараметрКоманды);
 ТабДок.ОтображатьСетку = Ложь;
 ТабДок.Защита = Ложь;
 ТабДок.ТолькоПросмотр = Ложь;
 ТабДок.ОтображатьЗаголовки = Ложь;
 КонецПроцедуры
 
Процедура ДоговорСПоставщиком (ТабДок, ПараметрКоманды);
Справочники.ДоговорыКонтрагентов.ДоговорСПоставщиком(ТабДок, ПараметрКоманды);
КонецПроцедуры
Ответ: Nut345, все зависит от типа команды

Добавлено через 1 минуту
С множественным типом параметра команды работать ТАК не будет