Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: КД2, выгрузка элементов зарегистрированых "по ссылке"

КД2,

пишу правила, есть документ, в котором реквизиты выгружаются "по ссылке" (то есть в файле только поля поиска), но при этом в приемнике при этом возникают "объект не найден". Конечно можно Установить галочку "не выгружать объекты свойств по ссылкам" и в каждом свойстве написать обработчик "после выгрузки" 

ВыгрузитьПоПравилу(Значение,,,,ИмяПКО)

но тогда мы в каждом пакете выгружаем все объекты вне зависимости нужны они нам или нет...

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

Как Вы решаете эту проблему?
Ответ: короче я хочу пойти мудреным путем...

в случае если в получателе НСИ не найден - я его буду создавать програмно (только гуид, так сказать резерв делаю), регистрировать в получателе для обмена в обратную сторону.

а в источнике при получении пакета мне будет приходить НСИ которую я буду регистрировать для нормальной отправки в получатель (там уже есть резерв и мне только поля заполнить останется).

такая многоступенчатая хрень... правда тут будет возникать вопрос с тем кога можно будет проводить полученные документы (а проводить их можно только когда нет зарегестрированой НСИ)
Вопрос: Доработка кода. Что написать к "пустой ссылке"? (см. в коде)

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
Процедура ЗаполнитьТаблицуПлатежей(Элемент)
    Список=Новый СписокЗначений;
    
         Если Платежи.Количество()>0 Тогда
              Для КАждого жж Из Платежи Цикл             
             Список.Добавить(жж.ПоступлениеДенег);
              КонецЦикла;
        КонецЕсли;
 Док=Документы.ПоступлениеНаРасчетныйСчет;
      НашиПлатежи=Док.Выбрать();
      Пока НашиПлатежи.Следующий() Цикл
          Если НашиПлатежи.Контрагент <> Заказчик Тогда
              Продолжить;
          КонецЕсли;
          
           Если НашиПлатежи.Проведен = Ложь Тогда
              Продолжить;
          КонецЕсли;
            
             
              Если НашиПлатежи.Контрагент.Ссылка=Заказчик Тогда
             Точка=0;
                 Если НашиПлатежи.ДоговорКонтрагента=ГлавныйДоговор Тогда
                   РезПоиска=Список.НайтиПоЗначению(НашиПлатежи.Ссылка);
                    Если РезПоиска=Неопределено Тогда
                       Запись=Платежи.Добавить();
                       Запись.ПоступлениеДенег=НашиПлатежи.Ссылка;
                       Запись.Сумма=НашиПлатежи.СуммаДокумента;
                       Запись.ДатаПлатежа=НашиПлатежи.Дата;
                   ИНаче
                       Сообщить("Найденный документ уже в списке!");
                     КонецЕсли;
              КонецЕсли;
          КонецЕсли;
          
//Что надо написать к пустой ссылке?
           
             Если   .ПустаяСсылка() Тогда
                
              
    суб1=НашиПлатежи.СубконтоКт1;
    суб2=НашиПлатежи.СубконтоКт2;
 
            ИмяПеречисления1=суб2.Метаданные().Имя;
            ИмяПеречисления2=суб2.Метаданные().Имя;
Если ИмяПеречисления2= "ДоговорыКонтрагентов"  Тогда
                 РезПоиска=Список.НайтиПоЗначению(НашиПлатежи.Ссылка);
                    Если РезПоиска=Неопределено Тогда
                       Запись=Платежи.Добавить();
                       Запись.ПоступлениеДенег=НашиПлатежи.Ссылка;
                       Запись.Сумма=НашиПлатежи.СуммаДокумента;
                       Запись.ДатаПлатежа=НашиПлатежи.Дата;
                   ИНаче
                       Сообщить("Найденный документ уже в списке!");
                     КонецЕсли;
              КонецЕсли;
Если ИмяПеречисления1= "ДоговорыКонтрагентов"Тогда
 
 РезПоиска=Список.НайтиПоЗначению(НашиПлатежи.Ссылка);
                    Если РезПоиска=Неопределено Тогда
                       Запись=Платежи.Добавить();
                       Запись.ПоступлениеДенег=НашиПлатежи.Ссылка;
                       Запись.Сумма=НашиПлатежи.СуммаДокумента;
                       Запись.ДатаПлатежа=НашиПлатежи.Дата;
                   ИНаче
                       Сообщить("Найденный документ уже в списке!");
                     КонецЕсли;
              КонецЕсли;
 
               КонецЕсли;
      
          
 
         КонецЦикла; 
                 
    
    
                     
     КонецПроцедуры
Ответ: Хрен знает что там имеется ввиду

Не по теме:

Тому кто это написал надо штраф выписать за говнокод



Добавлено через 3 минуты
Каприкон, ты бы хоть логику озвучил
Вопрос: Как открыть 1с8.3 по ссылке "e1c://server/..." из Outlook Web App ?

Из стационарного Outlook-а 1с открывается на раз, из "Outlook Web App" - не хочет.

У кого-нить есть опыт в этом деле? ...может ньансы какие-то, настройки?
Ответ: +()  поправка из "Outlook Web App" - тоже открывает, но через раз...  куда копать ?
Вопрос: БП 3.0. Распределение "по выручке". Не закрывает 25 и 26 счет. Продажи есть.

(Вы будете ржать, но...)
1С:Предприятие 8.3 (8.3.10.2561)
Бухгалтерия предприятия, редакция 3.0 (3.0.58.41)
ОСНО.
Закрытие  месяца.
Распределение косвенных затрат с 25 и 26 счета "По выручке".
Обороты по 90.01 (продажи) есть во всех месяцах.
В Январе,Феврале, Апреле, Мае распределение проходит и 25 и 26 счет закрываются (в "ноль").
В марте и июне 25 и 26 счет не закрываются. Не формируется база распределения косвенных расходов.
При этом если делать распределение "по объему выпуска" или "по материальным затратам" то 25 и 26 закрываются во всех месяцах.

Суть в последнем месяце каждого квартала не находит базу "По выручке".
Вопрос: что я просмотрел и куда копать?
Ответ: () Закрытие месяца видит выпуск продукции, но в упор не замечает выручку по произведенной продукции. Я бы начал с  выручки.
Вопрос: Загрузка ТабличнойЧасти на управляемой форме из реквизита (ТЧ "по умолчанию").

Доброго времени суток.

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



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

        нЭлемент = Элементы.Добавить(СтрЗаменить(Кол," ",""), Тип("ПолеФормы"), Элементы.КонтрольЦен); 
        нЭлемент.Вид = ВидПоляФормы.ПолеВвода; 
        нЭлемент.ПутьКДанным = "Объект.КонтрольЦен."+СтрЗаменить(Кол," ","");    
    КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура ВидыУстанавливаемыхЦенПриИзменении(Элемент)
    ВидыУстанавливаемыхЦенПриИзмененииНаСервере();
КонецПроцедуры

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

&НаКлиенте
Процедура ВидыУстанавливаемыхЦенНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    УдалитьКолонки();
КонецПроцедуры
Вопрос: Заполняю Документ "отчёт" по документу "Заказ" через кнопку.

По кнопке документа "Заказ" создать документ "Отчет" и открыть его форму и заполнить в ней автаматически поля из документа"Заказ".
Всё пишу в модуле формы.
Подскажите что не так делаю.

&НаКлиенте
Процедура ВопросПоЗаказу()
    Если Модифицированность Тогда
    Ответ = Вопрос("Заказ не записан. Записать?", РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да, );
    КонецЕсли;
    Если Ответ = КодВозвратаДиалога.Да Тогда
        ЭтотОбъект.Записать();
    КонецЕсли;
    ОтчитатьсяПоЗаказу();
    ЭтотОбъект.Объект.Ссылка.ОтчетПоЗаказу
ЭтаФорма.Открыть();
КонецПроцедуры

&НаСервере
Функция ОтчитатьсяПоЗаказу() Экспорт

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

&НаКлиенте
Процедура кнОтчитаться(Команда)    
    
ВопросПоЗаказу();
ЭтаФорма.ОбновитьОтображениеДанных();

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


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

    КонецЕсли;
    
КонецПроцедуры
Ответ: Тип значения Объект.ОтчетПоЗаказу?
Вопрос: Создание дипломного проекта "Электронная библиотека"

Здравствуйте. Пишу диполом на 1с. Электронная Библиотека. Итак суть проблемы: Я хотел бы чтобы в табличной части справочника "Студенты"-1, после выбора в реквизите "Название_Книги"-2 определённой книги, в реквизите "id_Экземпляр"-3 появлялся на выбор список доступных экземпляров. Цифрами возле ковычек я отметил обозначения на картинки. Ещё бы конечно было неплохо чтобы при попадании экземпляра к студенту чтобы статус менялся, но это зада второстепенная. Помогите пожалуйста. Ещё вопрос: Почему после ссылания на какое-то поле я могу в текущее поле добавлять только стандартный реквезит "Наименование"? Спасибо за уделённое внимание. (Ещё посоветуйте пожалуйста книжек для чайника которые могли бы помочь в моей теме плиз.)
Ответ:
Сообщение от rung15
не знаю почему, но список выпадает только при нажатии кнопки ф4, а когда нажимаешь на стрелочку ничего не происходит, и троеточие пропало куда-то
Кому я это писала?

Сообщение от GreenkA
Не забудьте в свойствах элемента формы "id_Экземпляр" включить "Кнопку списка".
Кнопка списка и дает эти "три точки", которые у вас пропали. Автоматом у вас это отображаться не будет, потому что тип реквизита "id_Экземпляр" - Строка. Был бы справочник - ничего в свойствах изменять не пришлось бы, и пометки "Авто" хватило бы.

Сообщение от rung15
Вот чего я достиг за 6 часов и более 8 пересозданных конфигураций
Начинать сначала можно много раз, но итог будет один и тот же, если не понять, в чем проблема. Может стоит что-то перечитать? Эту тему, книгу, погуглить...

Ответы на вопросы из файла
Кликните здесь для просмотра всего текста

СтандартнаяОбработка = Ложь; - (Для чего это, как я понял если книга не заполнена чтобы не выполнялась обработка выводящая список экземпляров.)
Отключение стандартной обработки события элемента формы, чтобы сработало наше описание события.
Пример для вашей конфигурации: есть элемент формы, связанный с реквизитом Название_Книги (тип СправочникСсылка.Книги). Стандартная обработка события НачалоВыбора() этого элемента приведет к открытию ФормыВыбора справочника Книги. Если мы хотим передать туда дополнительные параметры, выставить например отбор, открыть другую форму - отключаем стандартную обработку и пишем то, что хотим сделать по этому событию.

&НаСервереБезКонтекста (Чем отличаеться сервер с контекстом и без, и почему именно такой выбран)
Почитайте про директивы в 1С. Много, но полезно.

1C
1
2
3
4
5
6
7
8
9
Запрос = новый Запрос("ВЫБРАТЬ
                          | КнигиЭкземпляры.id_Экземпляр
//что такое КнигиЭкземпляры, такого справочника нет, реквизита тоже как и табличной части.
                          |ИЗ
                          | Справочник.Книги.Экземпляры КАК КнигиЭкземпляры
                          |ГДЕ
                          | КнигиЭкземпляры.Ссылка = &Ссылка 
//Тот же вопрос
                          | И КнигиЭкземпляры.Наличие = ИСТИНА");
Почитайте
Конкретно по вашим вопросам: это текст запроса, в котором идет обращение к таблице Справочник.Книги.Экземпляры(табличной части Экземпляры), имя таблицы в запросе можно менять, здесь оно определено как КнигиЭкземпляры. Поэтому все получаемые поля мы определяем как <ИмяТаблицы>.<ИмяПоля>, отсюда
КнигиЭкземпляры.id_Экземпляр. "КнигиЭкземпляры.Ссылка = &Ссылка" - отбор записей в запросе по конкретному элементу справочнику Книги, который мы позже выставляем как параметр - "Запрос.УстановитьПараметр("Ссылка", Книга);".

Запрос.УстановитьПараметр("Ссылка", Книга); (Для чего нужен параметр)
Чтобы в выборку запроса не попали данные по всем книгам, а только по одной заданной.

Книги_Студентаid_ЭкземплярПриИзмененииНаСервере(ТекущаяСтрока.Название_Книги, ТекущаяСтрока.id_Экземпляр); (Это типа пересылка на процедуру ниже)
Это вопрос или утверждение? Типа да)

НайдСтрока = ТекущаяКнига.Экземпляры.НайтиСтроки(Новый Структура("id_Экземпляр", id_Экземпляр)); (Тут вообще не понимаю ничего, и для чего нам нужна структура особенно)
Умеете пользоваться синтакс-помощником? Вызов ctrl+f1, если выставите в это время курсор на чем-то непонятном - он еще сразу и попытается найти информацию об этом, с описанием и примерами.
Описание метода НайтиСтроки(): осуществляет поиск строк табличной части, соответствующих заданному условию поиска.
Условия поиска заданы в скобках в виде структуры, где в начале "id_Экземпляр" - ключ структуры, имя колонки поиска, дальше - значение структуры - id_Экземпляр(без кавычек). Это значение мы передали при вызове процедуры Книги_Студентаid_ЭкземплярПриИзмененииНаСервере(Книга, id_Экземпляр).

Если НайдСтрока.Количество() > 0 Тогда () (Если мы выбираем какую-то строку из экземпляров то делаем её ложной?)
Ложной - это как? В этой строке мы проверяем, нашлись ли строки в табличной части по заданным параметрам поиска, чтобы не было ошибок при попытке получения значения по индексу.


Директивы компиляции
Кликните здесь для просмотра всего текста

Каждая процедура и функция модуля формы, модуля команды и общего модуля управляемого приложения предваряется директивой компиляции, определяющей среду исполнения данной процедуры. Директива предваряется символом "&". Допустимые директивы:

&НаКлиенте (&AtClient) — определяет клиентскую процедуру (функцию);
&НаСервере (&AtServer) — определяет серверную процедуру (функцию);
&НаСервереБезКонтекста (&AtServerNoContext) — определяет серверную процедуру (функцию), исполняемую на сервере вне контекста формы. Переменные не могут быть внеконтекстными. В таких методах недоступен контекст формы (включая данные формы). Допустимыми являются вызовы только других внеконтекстных методов. При вызове этих методов не выполняется передача данных формы на сервер и обратно. Применение внеконтекстных методов позволяет существенно уменьшить объем передаваемых данных при вызове серверной процедуры из среды клиентского приложения;
&НаКлиентеНаСервереБезКонтекста (&AtClientAtServerNoContext) — определяет процедуру (функцию), исполняемую в модуле формы на клиенте и на сервере, не имеющую доступа к контексту формы, данным формы, переменным, но имеющую доступ к процедурам и функциям общих модулей – серверных, не глобальных и серверных и клиентских одновременно. Сама процедура (функция) доступна для клиентский, серверных контекстных и неконтекстных процедур и функций модуля формы. Из серверных внеконтекстных методов формы допускается вызов серверных методов общих модулей;
&НаКлиентеНаСервере (&AtClientAtServer) — определяет процедуру (функцию), исполняемую в модуле команды, выполняемую на клиенте и на сервере, имеющую доступ к процедурам и функциям общих модулей – серверных, не глобальных и серверных и клиентских одновременно, не имеющую доступ к переменным. Сама процедура (функция) доступна для клиентских серверных процедур и функций модуля команды.
Клиентская процедура (функция) исполняется в среде клиентского приложения. В такой процедуре доступен клиентский контекст формы и вызовы любых процедур модуля.

Серверная процедура (функция) исполняется в среде серверного приложения. В такой процедуре доступны данные формы, доступен серверный контекст формы и вызовы серверных и серверных внеконтекстных процедур модуля. При вызове такой процедуры данные формы будут передаваться с клиента на сервер и обратно (по окончанию вызова).

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

Отсутствие директивы компиляции перед процедурой (функцией) означает использование директивы по умолчанию. Директивой по умолчанию является &НаСервере. Не допускается использование нескольких директив компиляции перед одной процедурой (функцией). Не допускается наличие одноименных процедур (функций), отличающихся только директивами компиляции.

В модуле управляемой формы допускается использование инструкций препроцессору. Рекомендуется использовать инструкции препроцессора только внутри процедур (функций). Для понимания результата при "пересечении" инструкциями препроцессора границ процедур (функций) следует учитывать, что обработка инструкций препроцессора выполняется до обработки директив компиляции.

В модуле команды предопределенная процедура-обработчик ОбработатьКоманду должна предваряться директивой &НаКлиенте, так как выполнение команды происходит в клиентском приложении.

Модуль формы
В модуле формы доступны директивы компиляции – &НаКлиенте, &НаСервере, &НаСервереБезКонтекста, &НаКлиентеНаСервереБезКонтекста.
Модуль команды
В модуле команды доступны директивы компиляции – &НаКлиенте, &НаСервере, &НаКлиентеНаСервере.
Общий модуль
В общем модуле доступны директивы компиляции – &НаКлиенте, &НаСервере.
Вопрос: Создание дипломного проекта "Электронная библиотека"

Здравствуйте. Пишу диполом на 1с. Электронная Библиотека. Итак суть проблемы: Я хотел бы чтобы в табличной части справочника "Студенты"-1, после выбора в реквизите "Название_Книги"-2 определённой книги, в реквизите "id_Экземпляр"-3 появлялся на выбор список доступных экземпляров. Цифрами возле ковычек я отметил обозначения на картинки. Ещё бы конечно было неплохо чтобы при попадании экземпляра к студенту чтобы статус менялся, но это зада второстепенная. Помогите пожалуйста. Ещё вопрос: Почему после ссылания на какое-то поле я могу в текущее поле добавлять только стандартный реквезит "Наименование"? Спасибо за уделённое внимание. (Ещё посоветуйте пожалуйста книжек для чайника которые могли бы помочь в моей теме плиз.)
Ответ:
Сообщение от rung15
не знаю почему, но список выпадает только при нажатии кнопки ф4, а когда нажимаешь на стрелочку ничего не происходит, и троеточие пропало куда-то
Кому я это писала?

Сообщение от GreenkA
Не забудьте в свойствах элемента формы "id_Экземпляр" включить "Кнопку списка".
Кнопка списка и дает эти "три точки", которые у вас пропали. Автоматом у вас это отображаться не будет, потому что тип реквизита "id_Экземпляр" - Строка. Был бы справочник - ничего в свойствах изменять не пришлось бы, и пометки "Авто" хватило бы.

Сообщение от rung15
Вот чего я достиг за 6 часов и более 8 пересозданных конфигураций
Начинать сначала можно много раз, но итог будет один и тот же, если не понять, в чем проблема. Может стоит что-то перечитать? Эту тему, книгу, погуглить...

Ответы на вопросы из файла
Кликните здесь для просмотра всего текста

СтандартнаяОбработка = Ложь; - (Для чего это, как я понял если книга не заполнена чтобы не выполнялась обработка выводящая список экземпляров.)
Отключение стандартной обработки события элемента формы, чтобы сработало наше описание события.
Пример для вашей конфигурации: есть элемент формы, связанный с реквизитом Название_Книги (тип СправочникСсылка.Книги). Стандартная обработка события НачалоВыбора() этого элемента приведет к открытию ФормыВыбора справочника Книги. Если мы хотим передать туда дополнительные параметры, выставить например отбор, открыть другую форму - отключаем стандартную обработку и пишем то, что хотим сделать по этому событию.

&НаСервереБезКонтекста (Чем отличаеться сервер с контекстом и без, и почему именно такой выбран)
Почитайте про директивы в 1С. Много, но полезно.

1C
1
2
3
4
5
6
7
8
9
Запрос = новый Запрос("ВЫБРАТЬ
                          | КнигиЭкземпляры.id_Экземпляр
//что такое КнигиЭкземпляры, такого справочника нет, реквизита тоже как и табличной части.
                          |ИЗ
                          | Справочник.Книги.Экземпляры КАК КнигиЭкземпляры
                          |ГДЕ
                          | КнигиЭкземпляры.Ссылка = &Ссылка 
//Тот же вопрос
                          | И КнигиЭкземпляры.Наличие = ИСТИНА");
Почитайте
Конкретно по вашим вопросам: это текст запроса, в котором идет обращение к таблице Справочник.Книги.Экземпляры(табличной части Экземпляры), имя таблицы в запросе можно менять, здесь оно определено как КнигиЭкземпляры. Поэтому все получаемые поля мы определяем как <ИмяТаблицы>.<ИмяПоля>, отсюда
КнигиЭкземпляры.id_Экземпляр. "КнигиЭкземпляры.Ссылка = &Ссылка" - отбор записей в запросе по конкретному элементу справочнику Книги, который мы позже выставляем как параметр - "Запрос.УстановитьПараметр("Ссылка", Книга);".

Запрос.УстановитьПараметр("Ссылка", Книга); (Для чего нужен параметр)
Чтобы в выборку запроса не попали данные по всем книгам, а только по одной заданной.

Книги_Студентаid_ЭкземплярПриИзмененииНаСервере(ТекущаяСтрока.Название_Книги, ТекущаяСтрока.id_Экземпляр); (Это типа пересылка на процедуру ниже)
Это вопрос или утверждение? Типа да)

НайдСтрока = ТекущаяКнига.Экземпляры.НайтиСтроки(Новый Структура("id_Экземпляр", id_Экземпляр)); (Тут вообще не понимаю ничего, и для чего нам нужна структура особенно)
Умеете пользоваться синтакс-помощником? Вызов ctrl+f1, если выставите в это время курсор на чем-то непонятном - он еще сразу и попытается найти информацию об этом, с описанием и примерами.
Описание метода НайтиСтроки(): осуществляет поиск строк табличной части, соответствующих заданному условию поиска.
Условия поиска заданы в скобках в виде структуры, где в начале "id_Экземпляр" - ключ структуры, имя колонки поиска, дальше - значение структуры - id_Экземпляр(без кавычек). Это значение мы передали при вызове процедуры Книги_Студентаid_ЭкземплярПриИзмененииНаСервере(Книга, id_Экземпляр).

Если НайдСтрока.Количество() > 0 Тогда () (Если мы выбираем какую-то строку из экземпляров то делаем её ложной?)
Ложной - это как? В этой строке мы проверяем, нашлись ли строки в табличной части по заданным параметрам поиска, чтобы не было ошибок при попытке получения значения по индексу.


Директивы компиляции
Кликните здесь для просмотра всего текста

Каждая процедура и функция модуля формы, модуля команды и общего модуля управляемого приложения предваряется директивой компиляции, определяющей среду исполнения данной процедуры. Директива предваряется символом "&". Допустимые директивы:

&НаКлиенте (&AtClient) — определяет клиентскую процедуру (функцию);
&НаСервере (&AtServer) — определяет серверную процедуру (функцию);
&НаСервереБезКонтекста (&AtServerNoContext) — определяет серверную процедуру (функцию), исполняемую на сервере вне контекста формы. Переменные не могут быть внеконтекстными. В таких методах недоступен контекст формы (включая данные формы). Допустимыми являются вызовы только других внеконтекстных методов. При вызове этих методов не выполняется передача данных формы на сервер и обратно. Применение внеконтекстных методов позволяет существенно уменьшить объем передаваемых данных при вызове серверной процедуры из среды клиентского приложения;
&НаКлиентеНаСервереБезКонтекста (&AtClientAtServerNoContext) — определяет процедуру (функцию), исполняемую в модуле формы на клиенте и на сервере, не имеющую доступа к контексту формы, данным формы, переменным, но имеющую доступ к процедурам и функциям общих модулей – серверных, не глобальных и серверных и клиентских одновременно. Сама процедура (функция) доступна для клиентский, серверных контекстных и неконтекстных процедур и функций модуля формы. Из серверных внеконтекстных методов формы допускается вызов серверных методов общих модулей;
&НаКлиентеНаСервере (&AtClientAtServer) — определяет процедуру (функцию), исполняемую в модуле команды, выполняемую на клиенте и на сервере, имеющую доступ к процедурам и функциям общих модулей – серверных, не глобальных и серверных и клиентских одновременно, не имеющую доступ к переменным. Сама процедура (функция) доступна для клиентских серверных процедур и функций модуля команды.
Клиентская процедура (функция) исполняется в среде клиентского приложения. В такой процедуре доступен клиентский контекст формы и вызовы любых процедур модуля.

Серверная процедура (функция) исполняется в среде серверного приложения. В такой процедуре доступны данные формы, доступен серверный контекст формы и вызовы серверных и серверных внеконтекстных процедур модуля. При вызове такой процедуры данные формы будут передаваться с клиента на сервер и обратно (по окончанию вызова).

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

Отсутствие директивы компиляции перед процедурой (функцией) означает использование директивы по умолчанию. Директивой по умолчанию является &НаСервере. Не допускается использование нескольких директив компиляции перед одной процедурой (функцией). Не допускается наличие одноименных процедур (функций), отличающихся только директивами компиляции.

В модуле управляемой формы допускается использование инструкций препроцессору. Рекомендуется использовать инструкции препроцессора только внутри процедур (функций). Для понимания результата при "пересечении" инструкциями препроцессора границ процедур (функций) следует учитывать, что обработка инструкций препроцессора выполняется до обработки директив компиляции.

В модуле команды предопределенная процедура-обработчик ОбработатьКоманду должна предваряться директивой &НаКлиенте, так как выполнение команды происходит в клиентском приложении.

Модуль формы
В модуле формы доступны директивы компиляции – &НаКлиенте, &НаСервере, &НаСервереБезКонтекста, &НаКлиентеНаСервереБезКонтекста.
Модуль команды
В модуле команды доступны директивы компиляции – &НаКлиенте, &НаСервере, &НаКлиентеНаСервере.
Общий модуль
В общем модуле доступны директивы компиляции – &НаКлиенте, &НаСервере.
Вопрос: Создать карточку "отгрузка продукта"

Здравствуйте. Помогите пожалуйста. Необходимо сделать карточку "отгрузка продукта" содержит следующие поля:
• группа марок товара
• марка товара в группе
• заказчик
• адрес выгрузки – область
• адрес выгрузки – город
• адрес выгрузки – улица
• адрес выгрузки – адрес электронной почты
• контактный GSM телефон получателя
• перевозчик
• контактный GSM телефон водителя
• рег. знак машины
• тип машины
• дата и время фиксации тары
• дата и время фиксации конечного веса
• дата и время успешной отправки SMS и e-mail уведомлений
• вес тары
• вес брутто
• вес нетто
Вопрос как и где это лучше сделать? Делать справочник с данными полями или в Документах или вообще как то по другому?
Ответ: Документ предназначен все же для регистрации операций.
Например изменение типа машины - операция изменения которая по РС введет новые данные.
Но сама карточка все же - справочник.

Добавлено через 1 минуту
я бы сделал карточку справочником, связал бы с периодическими РС , документом бы сделал операции изменения. И расширять проще потом бы было, и контролировать кто и что меняет
Вопрос: "Таблица значений" в результате запроса

Здравствуйте!
Есть запрос к двум таблицам с использованием соединения. У одной из таблиц есть табличная часть. Из этой табличной части нужно вывести поля в результат запроса. Но у меня получается результат, представленный на картинке. То есть эта табличная часть выводится как "Таблица значений", а мне нужно отдельными полями. Как это сделать?
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
ВЫБРАТЬ
    АдресаДоставкиКодыСинхронизации.Код,
    АдресаДоставкиКодыСинхронизации.Ссылка.Владелец,
    АдресаДоставкиКодыСинхронизации.Ссылка.Адрес,
    ВидыРасчетовПродажа.ТипЦен.Наименование,
    ВидыРасчетовПродажа.Код КАК Код1,
    ВидыРасчетовПродажа.Наименование,
    ВидыРасчетовПродажа.ЦеновыеНастройки.(
        КомиссияФСБН,
        КомиссияФСН,
        ЦеноваяНастройка,
        ФондоваяНаценка,
        ФинансоваяСкидкаБезналичная,
        ФинансоваяСкидкаНаличная
    )
ИЗ
    Справочник.ВидыРасчетовПродажа КАК ВидыРасчетовПродажа
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.АдресаДоставки.КодыСинхронизации КАК АдресаДоставкиКодыСинхронизации
        ПО (АдресаДоставкиКодыСинхронизации.Ссылка.Владелец = ВидыРасчетовПродажа.Владелец)
ГДЕ
    АдресаДоставкиКодыСинхронизации.ЭлектроннаяПлощадка.Наименование = &A
    И ВидыРасчетовПродажа.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
Ответ: Пока пришел вот к такому запросу. Получается примерно то, что нужно. Но табличная часть "Ценовая настройка" может содержать более одного элемента, соответственно в результате выводятся одинаковые строки с отличием только в полях из Ценовой настройки. Как вывести только те результаты, у которых количество ценовых настроек = 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
ВЫБРАТЬ
    АдресаДоставкиКодыСинхронизации.Код,
    АдресаДоставкиКодыСинхронизации.Ссылка.Владелец,
    АдресаДоставкиКодыСинхронизации.Ссылка.Адрес,
    ВидыРасчетовПродажа.ТипЦен.Наименование,
    ВидыРасчетовПродажа.Код КАК Код1,
    ВидыРасчетовПродажа.Наименование,
    ЦеновыеНастройки1.КомиссияФСБН,
    ЦеновыеНастройки1.КомиссияФСН,
    ЦеновыеНастройки1.ЦеноваяНастройка,
    ЦеновыеНастройки1.ФондоваяНаценка,
    ЦеновыеНастройки1.ФинансоваяСкидкаБезналичная,
    ЦеновыеНастройки1.ФинансоваяСкидкаНаличная
 
ИЗ
    Справочник.ВидыРасчетовПродажа КАК ВидыРасчетовПродажа
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.АдресаДоставки.КодыСинхронизации КАК АдресаДоставкиКодыСинхронизации
        ПО (АдресаДоставкиКодыСинхронизации.Ссылка.Владелец = ВидыРасчетовПродажа.Владелец)
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыРасчетовПродажа.ЦеновыеНастройки КАК ЦеновыеНастройки1 
        ПО  ВидыРасчетовПродажа.Ссылка = ЦеновыеНастройки1.Ссылка
ГДЕ
    АдресаДоставкиКодыСинхронизации.ЭлектроннаяПлощадка.Наименование = &A
    И ВидыРасчетовПродажа.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)