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

Добрый день! УТ 11.1.10
Пытаюсь реализовать присоединение фотографий к документу.
Содрал все из Справочник.Номенклатура формы и процедуры ,в общем все 1 в 1
Но при добавлении фотки к документу вылетает ошибка

Код:
{ОбщийМодуль.ПрисоединенныеФайлыСлужебный.Модуль(1449)}: Ошибка при добавлении присоединенного файла.
У владельца файлов "Документ cервиса 00СЦ-0770 от 24.02.2016 11:31:50" типа "Документ cервиса"
не указан основной справочник для хранения файлов.

В этом случае параметр "НоваяСсылкаНаФайл" должен быть указан.
    ВызватьИсключение СокрЛП(ТекстОшибки);
Вроде бы все делал как у справочника номенклатура но не могу понять где искать этот НоваяСсылкаНаФайл

Вот из общего модуля процедура
Код:
// Возвращает имя справочника для указанного владельца или вызывает исключение,
// если их более одного.
//
// Параметры:
//  ВладелецФайлов  - Ссылка - объект, к которому добавляется файл.
//  ИмяСправочника  - Строка, если заполнено, то выполняется проверка
//                    наличия справочника среди справочников владельца для хранения файлов.
//                    Если не заполнено, возвращает имя основного справочника.
//  ЗаголовокОшибки - Строка - заголовок ошибки.
//                  - Неопределено - не вызывать исключение, а вернуть пустую строку.
//  ИмяПараметра    - Строка - имя требуемого параметра для определения имени справочника.
//  ОкончаниеОшибки - Строка - окончание ошибки (только для случая, когда ИмяПараметра = Неопределено).
//
Функция ИмяСправочникаХраненияФайлов(ВладелецФайлов, ИмяСправочника = "",
    ЗаголовокОшибки = Неопределено, ОкончаниеОшибки = Неопределено) Экспорт
   
    НеВызыватьИсключение = (ЗаголовокОшибки = Неопределено);
    ИменаСправочников = ИменаСправочниковХраненияФайлов(ВладелецФайлов, НеВызыватьИсключение);
   
    Если ИменаСправочников.Количество() = 0 Тогда
        Если НеВызыватьИсключение Тогда
            Возврат "";
        КонецЕсли;
       
        ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
            ЗаголовокОшибки + Символы.ПС +
            НСтр("ru = 'У владельца файлов ""%1"" типа ""%2""
                       |нет справочников для хранения файлов.'"),
            Строка(ВладелецФайлов),
            Строка(ТипЗнч(ВладелецФайлов)));
    КонецЕсли;
   
    Если ЗначениеЗаполнено(ИмяСправочника) Тогда
        Если ИменаСправочников[ИмяСправочника] <> Неопределено Тогда
            Возврат ИмяСправочника;
        КонецЕсли;
   
        Если НеВызыватьИсключение Тогда
            Возврат "";
        КонецЕсли;
       
        ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
            ЗаголовокОшибки + Символы.ПС +
            НСтр("ru = 'У владельца файлов ""%1"" типа ""%2""
                       |нет справочника ""%3"" для хранения файлов.'"),
            Строка(ВладелецФайлов),
            Строка(ТипЗнч(ВладелецФайлов)),
            Строка(ИмяСправочника));
    КонецЕсли;
   
    ОсновнойСправочник = "";
    Для каждого КлючИЗначение Из ИменаСправочников Цикл
        Если КлючИЗначение.Значение = Истина Тогда
            ОсновнойСправочник = КлючИЗначение.Ключ;
            Прервать;
        КонецЕсли;
    КонецЦикла;
   
    Если ЗначениеЗаполнено(ОсновнойСправочник) Тогда
        Возврат ОсновнойСправочник;
    КонецЕсли;
       
    Если НеВызыватьИсключение Тогда
        Возврат "";
    КонецЕсли;
   
    ШаблонПричиныОшибки =
        НСтр("ru = 'У владельца файлов ""%1"" типа ""%2""
            |не указан основной справочник для хранения файлов.'") + Символы.ПС;
           
    ПричинаОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
        ШаблонПричиныОшибки, Строка(ВладелецФайлов), Строка(ТипЗнч(ВладелецФайлов)));
       
    ТекстОшибки = ЗаголовокОшибки + Символы.ПС
        + ПричинаОшибки + Символы.ПС
        + ОкончаниеОшибки;
       
    ВызватьИсключение СокрЛП(ТекстОшибки);
   
КонецФункции
Ответ:
Ну зайдите в этот справочник - хранения файлов владельца, посмотрите какие реквизиты, какие типы используются. Без документации - скуритесь что-то внедрять
Вопрос: Открыть документ ворд из справочника

Добрый день. есть чистая база, один справочник с несколькими реквизитами и один из них должен содержать ссылку на вордовский документ, который можно открыть и просмотреть. Помогите, пж, может у кого есть аналогичный пример кода. Создаю реквизит справочника Приложение с типом Хранилище Значения, вставляю код (не мой, найденный на форуме) в модуль объекта, пишет ошибку
{Справочник.ТП.МодульОбъекта(8,29)}: Тип не определен (ДиалогВыбораФайла)
ДиалогВыбораФайла = Новый <<?>>ДиалогВыбораФайла(РежимДиалога); (Проверка: Сервер)
где то прочитала, что нужно обрамлять #Клиент Как это сделать? Помогите пжжж Код ниже

Процедура КоманднаяПанельПриложениеНажатиеКнопки(Кнопка)
Перем РежимДиалога, ДиалогВыбораФайла, Кнопки, дд, ИмяФайла, Папка, ПолноеИмяФайла;

Кнопки = ЭлементыФормы.ДействияФормы.Кнопки.Приложение.Кнопки;
Если Кнопка = Кнопки.Выбрать тогда

РежимДиалога = РежимДиалогаВыбораФайла.Открытие;
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалога);
ДиалогВыбораФайла.ПроверятьСуществованиеФайла = Истина;
ДиалогВыбораФайла.ПредварительныйПросмотр = Истина;
ДиалогВыбораФайла.Заголовок = "Выберите файл приложения";
ДиалогВыбораФайла.Фильтр = "*.doc|*.doc"; //"*.doc|*.doc|*.xls|*.xls|*.jpg|*.jpg|*.tif|*.tif|*.png|*.png|*.bmp|*.bmp|*.png|*.png|*.*|*.*";
Если ДиалогВыбораФайла.Выбрать() Тогда
Попытка
дд = Новый ДвоичныеДанные(ДиалогВыбораФайла.ПолноеИмяФайла);
Приложение = Новый ХранилищеЗначения(дд, Новый СжатиеДанных(6));
Исключение
Предупреждение(ОписаниеОшибки());
КонецПопытки;
КонецЕсли;

ИначеЕсли Кнопка = Кнопки.Показать тогда

Если Приложение.Получить() <> Неопределено тогда
//ИмяФайла = "1.doc");
//Папка = КаталогВременныхФайлов();
//ПолноеИмяФайла = Папка + ?(Прав(Папка, 1) = "\", "", "\") + ИмяФайла;
ПолноеИмяФайла = ПолучитьИмяВременногоФайла(".doc");
Попытка
дд = Приложение.Получить();
дд.Записать(ПолноеИмяФайла);
ЗапуститьПриложение(ПолноеИмяФайла);
Исключение
Предупреждение(ОписаниеОшибки());
КонецПопытки;
КонецЕсли;

ИначеЕсли Кнопка = Кнопки.СохранитьВфайл тогда

Если Приложение.Получить() <> Неопределено тогда
РежимДиалога = РежимДиалогаВыбораФайла.Сохранение;
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалога);
ДиалогВыбораФайла.Фильтр = "*.doc|*.doc"; //"*.doc|*.doc|*.xls|*.xls|*.jpg|*.jpg|*.tif|*.tif|*.png|*.png|*.bmp|*.bmp|*.png|*.png|*.*|*.*";
Если ДиалогВыбораФайла.Выбрать() Тогда
Попытка
дд = Приложение.Получить();
дд.Записать(ДиалогВыбораФайла.ПолноеИмяФайла);
Исключение
Предупреждение(ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
КонецЕсли;

ИначеЕсли Кнопка = Кнопки.Удалить тогда
// Диалог подтверждения
// ...
Приложение = Неопределено;

КонецЕсли;

ДоступностьКнопокОбработкиПриложения(Кнопки);

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

Процедура ДоступностьКнопокОбработкиПриложения(Кнопки)
Перем д;

д = Приложение.Получить() = Неопределено;
Кнопки.Выбрать.Доступность = Не ТолькоПросмотр и д;
Кнопки.Показать.Доступность = Не ТолькоПросмотр и Не д;
Кнопки.СохранитьВфайл.Доступность = Не ТолькоПросмотр и Не д;
Кнопки.Удалить.Доступность = Не ТолькоПросмотр и Не д;

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

Действие = Новый Действие("КоманднаяПанельПриложениеНажатиеКнопки");
нм = ЭлементыФормы.ДействияФормы.Кнопки.Добавить("Приложение", ТипКнопкиКоманднойПанели.Подменю); //нм.Картинка = Скрепка;
нк = нм.Кнопки.Добавить("Выбрать", ТипКнопкиКоманднойПанели.Действие, "Выбрать", Действие); нк.Картинка = БиблиотекаКартинок.ОткрытьФайл;
нк = нм.Кнопки.Добавить("Показать", ТипКнопкиКоманднойПанели.Действие, "Показать", Действие); нк.Картинка = БиблиотекаКартинок.Печать;
нк = нм.Кнопки.Добавить("СохранитьВфайл",ТипКнопкиКоманднойПанели.Действие, "Сохранить в файл", Действие);нк.Картинка = БиблиотекаКартинок.СохранитьФайл;
нк = нм.Кнопки.Добавить("Удалить", ТипКнопкиКоманднойПанели.Действие, "Удалить", Действие); нк.Картинка = БиблиотекаКартинок.Очистить;
ДоступностьКнопокОбработкиПриложения(нм.Кнопки);
Ответ:
Всем добрый день Спбственно такой вопрос, перепробывал ряд программ и не нашел нужную.Открыть нужно обычный вордовский документ на Sony Ericsson k790i, размером 58 КБ, подскажите пожалуйтса, буду очень благодарен
Вопрос: Заполнение документа из двух справочников

Код 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
&НаСервере
Процедура ЗаполнитьНаСервере(МоеБлюдо)
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |   БлюдаСписок.Продукт КАК Наименование,
    |   БлюдаСписок.Норма_кг КАК Норма_кг,
    |   Номенклатура.Наименование КАК Наименование1
    |ИЗ
    |   Справочник.Блюда.Список КАК БлюдаСписок
    |       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
    |       ПО БлюдаСписок.Продукт = Номенклатура.Ссылка
    |ГДЕ
    |   БлюдаСписок.Ссылка = &МоеБлюдо";
    
        Запрос.УстановитьПараметр("МоеБлюдо", МоеБлюдо);
        Результат = Запрос.Выполнить();         
    Выборка = Результат.Выбрать();
    Пока Выборка.Следующий() Цикл
        НоваяСтрока = Объект.ТабЧасть.Добавить();
        НоваяСтрока.Наименование = Выборка.Наименование1;
        НоваяСтрока.Расход = Выборка.Норма_кг;
        
    КонецЦикла;
    
   КонецПроцедуры
 
   
   
   
&НаКлиенте
Процедура НаименованиеБлюдаПриИзменении(Элемент)
    СтрокаТабличнойЧасти=Элементы.ТабЧасть.ТекущиеДанные;
   ЗаполнитьНаСервере(Объект.НаименованиеБлюда);
    
 
КонецПроцедуры
есть докМенюТребование с тчТАбЧасть в ней поля Наим и Расход
есть спрНоменлатура с Наим и спрБлюда с тч Список и полем Норма_кг
требуется при выборе блюда в менютр заполнить всеми записями из спрНоменлатура и из спрБлюда только те записи которые соответсвуют блюду
Ответ:
Код 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
&НаСервере
Процедура МенюПриИзмененииНаСервере(НомерСтроки)
    Запрос = Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ
                 |  Номенклатура.Наименование КАК Наименование,
                 |  БлюдаСписок.Норма_кг КАК Норма,
                 |  БлюдаСписок.НомерСтроки
                 |ИЗ
                 |  Справочник.Номенклатура КАК Номенклатура
                 |      ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Блюда.Список КАК БлюдаСписок
                 |      ПО (БлюдаСписок.Продукт = Номенклатура.Ссылка)
                 |ГДЕ
                 |  Номенклатура.ЭтоГруппа = ЛОЖЬ
                 |  И БлюдаСписок.НомерСтроки = &НомерСтроки";
                 Запрос.УстановитьПараметр("НомерСтроки", НомерСтроки);
                 Результат = Запрос.Выполнить();        
    Выборка = Результат.Выбрать();
    Пока Выборка.Следующий() Цикл
        НоваяСтрока = Объект.ТабЧасть.Добавить();
        НоваяСтрока.Наименование = Выборка.Наименование;
        КонецЦикла;
        Если НомерСтроки=1 Тогда                
        НоваяСтрока.Первое = Выборка.Норма;
        КонецЕсли;
        Если НомерСтроки=2 Тогда
        НоваяСтрока.Второе = Выборка.Норма;
        КонецЕсли;
 
        Если НомерСтроки=3 Тогда
        НоваяСтрока.Третее = Выборка.Норма;
                                           КонецЕсли;
 
        //ЗаполнитьЗначенияСвойств(Объект.ТабЧасть.Первое, Выборка.Норма);
    //КонецЦикла;
КонецПроцедуры
конегн не идеал но чуть чуть чтот в этом есть
Вопрос: Заполнение табличной части документа через подчиненный справочник

Доброго времени суток, помогите разобраться, у меня есть документ с номенклатурой, есть План видов характеристик в котором указаны свойства для номенклатуры и есть справочник "Значение свойств" который подченен этому плану и в нем указано значение характеристик. Подскажите пожалуйста, как мне сделать что бы когда я выбераю в документ для какой то номенклатуры свойства что бы выводило сразу все значение характеристик по этому свойству
Ответ: GreenkA, У конфигурации (конфигурацию я прикрепил к теме) есть документа "Сборка", который заполняется на основании документа "Спецификация". Документ спецификация делает движения по регистру сведений "РегистрСпецификации", как сделать что бы если в ручную в документ сборка добавляю системный блок, то по нему автоматически выберались детали с регистра и заносились в табличную часть.
Вот я написал запрос, но не пойму в какую процедуру его нужно вставить и немогу проверить правильный ли он так как документ на него вообще не реагирует
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
Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    РегистрСпецификацииСрезПоследних.НоменклатураСистемныйБлок,
        |    РегистрСпецификацииСрезПоследних.Количество,
        |    РегистрСпецификацииСрезПоследних.Свойство,
        |    РегистрСпецификацииСрезПоследних.НоменклатураДетали
        |ИЗ
        |    РегистрСведений.РегистрСпецификации.СрезПоследних КАК РегистрСпецификацииСрезПоследних";
 
 
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Если СписокСистемныхБлоков.НоменклатураСобираемыйСистемныйБлок = ВыборкаДетальныеЗаписи.НоменклатураСистемныйБлок Тогда
            
            СписокДеталейНеобходимыхДляСборки.НоменклатураДетали = ВыборкаДетальныеЗаписи.НоменклатураДетали;
            СписокДеталейНеобходимыхДляСборки.СвойстваДетали = ВыборкаДетальныеЗаписи.Свойство;
            СписокДеталейНеобходимыхДляСборки.Количество = ВыборкаДетальныеЗаписи.Количество;
        КонецЕсли;
        
    КонецЦикла;
Вопрос: Сравнить два разных документа (табеля)

Добрый день,
я новичек в деле программирования, но задача такова.
Я ежедневно заполняю табель раб.времени (свой формат, табель подразделения), раз в неделю получаю в Excel файле от ЦО офиса их табель (их формат, тебель офиса) и загружаю в 1С по идее данные фио, отработанные часы, смены и по дням должны у нас совпадать, но по халатности или лени одной из сторон, данные не вносяться и в итоге разнятся. И это очень осложняет рабочий процесс.
Может кто подскажет как сравнить эти два документа? сверять ручную по-фамильно, по-дням и часам очень сложно т.к. в день до 50 фио может быть... постоянно ошибаюсь.
Может в данные регистров сверять? или вывести их в отдельный документ???

Есть два регистра - 1й Учет смен (мой табель), 2й ТебельОфиса.

скрины прикладываю.

Заранее огромное спасибо!


Платформа самописная (не знаю кем)
1С:Предприятие 8.3 (8.3.7.1776)
Ответ: попробуй сравнением значений.
сра = новый сравнениезначений;
ктобольше = сра.сравнить(докс1, докс2);
вот так
Вопрос: Сравнить реквизиты двух документов

Доброго денечка!
Только начал изучать 1С, уже несколько дней все гуглю да гуглю по данному сабжу, но не могу найти. А если и нахожу, то большой отрезок кода, в котором не могу выделить полезную часть. После очередных поисков откладываю на потом с мыслью: "ой, все!", но не помогает. Даже книжку изучил: "1С:Предприятие 8.2. Практическое пособие разработчика. Примеры и типовые приемы", правда еще чуть-чуть до конца осталось.
(это было лирическое отступление, чтобы не подумали, что я лентяюга )

Так вот, к чему это я!

Есть два документа. По первому выдаются средства (займ), по второму погашается займ.
Первый, примем имя "Выдача", имеет реквизиты: "Человек" (тип - СправочникСсылка.Человеки") и "ОжидаемаяДатаВозврата" (тип - дата).
Второй, примем имя "Возврат", имеет реквизиты: "Человек" (тип - СправочникСсылка.Человеки") и "РеальнаяДатаВозврата" (тип - дата).
Сначала средства выдаются, то есть проводится первый документ, а потом проводится второй и смотрит, а не опоздал ли этот человечишка с возвратом... хм...И если реальная дата возврата средств больше ожидаемой даты возврата, то наложить штраф...

Так вот суть вопроса: как при проводке одного документа узнать реквизиты второго и сравнить их? В данном случае, нужно узнать "ОжидаемаяДатаВозврата" документа "Выдача" и сравнить с "РеальнаяДатаВозврата" документа "Возврат".

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

Добра вам!
Ответ: KROBOCICb, движения по каким-то регистрам у тебя создаются? По-моему должно быть как-то так: при проведении Выдачи в регистре (Долги, например; изменения - человек, дата возврата ожидаемая, ресурс - сумма). И там у нас будут храниться все долги по этому человеку. В твоем пособии про такие операции подробно написано.
Далее, мне кажется, что долг (штраф) нужно рассчитывать сразу при выборе даты в документе Возврат. Поэтому команду поместить на форму. Там при помощи запроса вытащить из нашего регистра долги и уже там сравнивать и назначать штраф. Про это все подробно написано у Радченко.
Вопрос: Перенести данные из Документа в Справочник при проведении

В документе Путевой лист из регистра накопления Спидометр выводятся данные о Конечном пробеге, вводится текущий Пробег и рассчитывается Конечный пробег. Как сделать так, чтобы при проведении документа Путевой лист данные о конечном пробеге записывались в справочник Автомобиль.

Пробовала вот так в модуле Путевого листа.
Запустила в отладке, провела путевой лист. Последние данные конечного спидометра показывает верно.
При следующем шаге пишет 0.
Ответ:
Сообщение от duk337
Не по теме:
Диоген тоже сам себя искал. А может, и не Диоген.

Сообщение от ne2503
Вопрос решен следующим образом. В документе ПроведениеТО создана процедура АвтомобильПриИзменении и процедура НайтиПробег
ДанныеСтроки = Элементы.ТабличнаяЧасть1.ТекущиеДанные;
ДанныеСтроки.ОбщийПробег = МодульПутевогоЛиста.ПоказанияНачальногоСпидометра(ДанныеСтроки.Автомобиль, Объект.Дата);
Вопрос: Получить из ВПФ данные другого документа

Здравствуйте всем, сам только знакомлюсь с работой в 1С.
Вопрос: Как во ВПФ можно помимо СсылкаНаОбъект обратиться к реквизиту документа, в частности, если мы открываем РТиУ и вызываем на печать ВПФ из которой мы хотим обратиться к реквизиту АдресДоставки заказа покупателя и получить ответом, что заполнено в АдресДоставки?

Сделал внешнюю обработку, для реквизита СсылкаНаОбъект указал составной тип данных: "ДокументСсылка.ЗаказПокупателя, ДокументСсылка.РеализацияТоваровУслуг" в ней указал такой код:
1C
1
2
3
Если ТипЗнч(СсылкаНаОбъект) = Тип("ДокументСсылка.ЗаказПокупателя") И ЗначениеЗаполнено(СсылкаНаОбъект.АдресДоставки) Тогда
    Сообщить (СсылкаНаОбъект.АдресДоставки);
КонецЕсли;
Но он мне выдаёт сообщение только тогда, когда у меня открыт документ заказ покупателя, а мне нужно получать сообщение тогда, когда у меня открыт документ РТиУ.

Обратиться циклом или запросом?
Примера навскидку нету?
Ответ: Dethmontt, в конфигураторе это Документы.ЗаказПокупателя - далее реквизит АдресДоставки.
Если пишу так: Сообщить(Документы.ЗаказПокупателя.АдресДоставки);
Та же ошибка: Поле объекта не обнаружено (ЗаказПокупателя)

Добавлено через 3 часа 10 минут
Вот так решил свой вопрос, буду знать, благодарю за помощь.
1C
1
2
3
Если ЗначениеЗаполнено (СсылкаНаОбъект.Сделка.АдресДоставки) Тогда
      Сообщить (СсылкаНаОбъект.Сделка.АдресДоставки);
КонецЕсли;
Вопрос: Данные из подвала документа в поле справочника

В табличной части документа есть подвал в нем считается итог по полю "Сумма". Можно ли как то число из этого подвала записать в поле справочника?
Ответ: KoTJIETKa, прикалываешься? Какой документ? Где хранится ссылка на него? Или справочник открывается из документа?
И еще раз:
Сообщение от SHIFT_969
пиши вопрос точнее
Сообщение от SHIFT_969
в чем сложность?
Вопрос: Автоматическое копирование полей из документа в несколько справочников

Здравствуйте помогите пожалуйста.
Необходимо чтоб при проведении документа ПриёмНаРаботу, в группу Работающие справочника Сотрудники переносились данные полей ФИО, Дата, Адрес и т.д. из документа ПриёмНаРаботу.
Ответ: Нужно в модуле документа при проведении разместить выше указанную процедуру