Процедура ВхождениеНоменклатурыВОднуИзГруппСписка(Номенклатура) Выборка = Справочники.Группы.Выбрать(); Пока Выборка.Следующий() Цикл Если Номенклатура.ПринадлежитЭлементу(Выборка.Группа) Тогда //Номенклатура входит в группу Иначе //Номенклатура не входит в группу КонецЕсли; КонецЦикла КонецПроцедуры
9 сент. 2016 г.
Проверить номенклатуру в иерархии
24 авг. 2016 г.
Создание узла РИБ плана обмена вручную
- В ЦБ пункт меню - Операции – Планы обмена – Полный – Создаю новый узел ПБ1
- В ЦБ пункт меню - Сервис – Распределенные информационные базы (РИБ) – Настроить узлы РИБ – Добавляю настройку обмена с Узлом ПБ1
- Беру файл базы данных 1Cv8.1CD нашей главной базы ЦБ и копирую его, например, в папку ПБ1 (папка ПБ1 естественно создаю так же)
- Подключаю скопированную базу обычным способом, через запуск 1С Предприятие – Добавить – Добавление в список существующей информационной базы
- Открываю скопированную базу ПБ1 и запускаю обработку СозданиеПодчиненногоУзла83.epf – устанавливаю галку «Очистить объекты, не участвующие в обмене - выбираю ПБ1 узел – нажимаю «Создать образ подчиненного узла»
- В ПБ1 пункт меню - Сервис - Сервис – Распределенные информационные базы (РИБ) – Настроить узлы РИБ – Добавляю настройку обмена с Узлом ЦБ
29 июл. 2016 г.
Не обязательное заполнение параметров в запросе 1С
На форме есть СписокЗначений (ОТК_Несоответствия) для заполнения пользователем параметров. Параметров может быть несколько или вовсе не быть.
При формировании Запроса нужно избежать ошибки "не заполнены параметры".
Я выхожу с данной ситуации вот так:
Запрос = Новый Запрос; //заполнение не обязательных параметров запроса Текст_Список_ОТК_Несоответствия = ""; Если Объект.ОТК_Несоответствия.Количество() <> 0 Тогда Список_ОТК_Несоответствия = Новый Массив; Для Каждого Эл Из Объект.ОТК_Несоответствия Цикл Список_ОТК_Несоответствия.Добавить(Эл.Значение); КонецЦикла; Текст_Список_ОТК_Несоответствия = " И ОтчетПроизводстваЗаСменуНесоответствия.Несоответствие В (&Несоответствие)"; Запрос.УстановитьПараметр("Несоответствие",Список_ОТК_Несоответствия); КонецЕсли; //ЗАПРОС Запрос.Текст = "ВЫБРАТЬ | ОтчетПроизводстваЗаСменуТовары.Ссылка.Ссылка КАК Ссылка, | ОтчетПроизводстваЗаСменуТовары.Номенклатура, | ОтчетПроизводстваЗаСменуГрафикРабот.Ссылка.Номер КАК ОПзС, | ОтчетПроизводстваЗаСменуГрафикРабот.Ссылка.Заказ.НомерЗаказаУТП КАК НомерЗаказа |ИЗ | Документ.ОтчетПроизводстваЗаСмену.ГрафикРабот КАК ОтчетПроизводстваЗаСменуГрафикРабот | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену.Товары КАК ОтчетПроизводстваЗаСменуТовары | ПО ОтчетПроизводстваЗаСменуГрафикРабот.Ссылка.Ссылка = ОтчетПроизводстваЗаСменуТовары.Ссылка.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену.ПричиныОстановки КАК ОтчетПроизводстваЗаСменуПричиныОстановки | ПО ОтчетПроизводстваЗаСменуГрафикРабот.Ссылка.Ссылка = ОтчетПроизводстваЗаСменуПричиныОстановки.Ссылка.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену.Несоответствия КАК ОтчетПроизводстваЗаСменуНесоответствия | ПО ОтчетПроизводстваЗаСменуГрафикРабот.Ссылка.Ссылка = ОтчетПроизводстваЗаСменуНесоответствия.Ссылка.Ссылка |ГДЕ | ОтчетПроизводстваЗаСменуГрафикРабот.Дата МЕЖДУ &ДатаНач И &ДатаКон | И ОтчетПроизводстваЗаСменуГрафикРабот.Операция = &Отгрузка" +Текст_Список_ОТК_Несоответствия+"; //обязательные параметры запроса Запрос.УстановитьПараметр("ДатаКон", КонецДня(Объект.ДатаКонец)); Запрос.УстановитьПараметр("ДатаНач", НачалоДня(Объект.ДатаНачало)); Запрос.УстановитьПараметр("Отгрузка", Константы.ПроизводствоОперацияОтгрузка.Получить()); //обязательные параметры запроса РезультатЗапроса = Запрос.Выполнить();
1 июл. 2016 г.
Обновляется поле ввода ПодключитьОбработчикОжидания
Что бы этого избежать нужно в свойствах элемента формы Поля ввода найти свойство ОбновлениеТекстаРедактирования и установить значение "При изменении значения".
Но разработчики 1С такое не рекомендують делать, а значит, лучше всего будет выводить обработчиком ожидания какое то значение (в моем случае это время) в заголово формы
25 июн. 2016 г.
Добавить фото на форму 1С
*(данные способ был полностью скопирован в Павла Чистова)
17 июн. 2016 г.
Результат запроса в одну строку
Пример:
Документ, в нем табличная часть, в ней много значений.
Обычным результатом запроса получается вот такой итог
а мне нужно вот такой итог
для того, что бы добиться выше результата нужно в СКД на вкладке Ресурсы добавить требуемое для вывода в одну строку Поле и в Выражении применить такую функцию
СоединитьСтроки (), у меня вышло СоединитьСтроки (Причина,",",",").
Справку по функции можно найти через Конфигуратор – Справка - Поиск по справке - СоединитьСтроки
13 июн. 2016 г.
Не срабатывает внешнее событие 1С
Толстый клиент Управляемое приложениеТолстый клиент Обычное приложение&НаКлиенте Перем ДемоКомп; &НаКлиенте Процедура ВнешнееСобытие(Источник, Событие, Данные) Сообщить(Данные); КонецПроцедуры &НаКлиенте Процедура Команда1(Команда) DevId = Неопределено; ПодключитьВнешнююКомпоненту("C:\ZR1C.dll", "Comp", ТипВнешнейКомпоненты.Native); ДемоКомп = Новый("AddIn.Comp.ZR1CExtension"); ДемоКомп.Порт = "Com3"; ДемоКомп.Подключить(DevId); КонецПроцедуры//Создаем Реквизит объекта с типом Произвольный Процедура КнопкаВыполнитьНажатие(Кнопка) DevId = Неопределено; ПодключитьВнешнююКомпоненту("C:\ZR1C.dll", "Comp", ТипВнешнейКомпоненты.Native); Реквизит1 = Новый("AddIn.Comp.ZR1CExtension"); Реквизит1.Порт = "Com3"; Реквизит1.Подключить(DevId); КонецПроцедуры Процедура ВнешнееСобытие(Источник, Событие, Данные) Сообщить(Данные); КонецПроцедуры
Выше был вариант подключения считывателя магнтных карт для самописной конфигурации, а вот ниже для этой же самописной конфигурации код подключения сканера штрих кода используя .dll компоненту от АТОЛ.
&НаКлиенте Перем ДемоКомп; &НаКлиенте Процедура ВнешнееСобытие(Источник, Событие, Данные) Сообщить(Данные); КонецПроцедуры &НаКлиенте Процедура Команда1(Команда) Попытка ЗагрузитьВнешнююКомпоненту( "C:\Scaner1C.dll"); ДемоКомп = Новый("AddIn.Scaner45"); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецПроцедуры
24 мая 2016 г.
Добавить номер телефона в КонтактнаяИнформация Контрагента УТ 3.0
Весь код, выглядит так:
…………………………
НовыйНомерТелефона = “+380(11)-111-11-11”;
Контрагент.Записать();
КонтрагентОбъект = Контрагент.Ссылка.ПолучитьОбъект(); НовСтрока = КонтрагентОбъект.КонтактнаяИнформация.Добавить(); НовСтрока.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон; НовСтрока.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонПартнера; НовСтрока.Представление = НовыйНомерТелефона; КонтрагентОбъект.ОбменДанными.Загрузка = Истина; КонтрагентОбъект.Записать();
10 мая 2016 г.
Конфигурация "Спортзал"
!!!Конфигурация на украинском языке, но, если есть желание, переведу на любой интересующий.
Данное прикладное решение имеет всего 4 вида объектов, это:
- 4 справочника (Абонемент (вид тренировки), Карта (ориентир скидок), Клиент (список клиентов)
- 1 отчет (по данным отчета можно узнать информацию о клиенте (когда, сколько и какого вида занятия брал клиент, а также баланс, скидка и долг по конкретному занятию).
- 1 регистр сведений (этим объектом реализовано сохранение и повторное использование одной и той же карточки клиента много раз, т.е., если срок действия абонемента закончился, то не надо создавать еще один элемент справочника для того самого клиента, ранее созданная карточка клиента может обновлять предыдущий вид абонемента).
- 1 обработка (осуществляет поиск клиента по индивидуально выданной карте для каждого клиента.
Описание объектов:
Абонемент или вид тренировки дает возможность выбрать тренировку или количество занятий (например, клиент может купить 50 занятий и заниматься только с тренером, а может посещать занятие за период, с 10 по 20 число месяца апрель и хоть ночевать в тренажерном зале). Также в окне абонемента можно и нужно указать как название, так и стоимость абонемента.
В карте клиента можно создать вид карты (по данному справочнику можно делать ориентир, например, создать карту «Универсальная», которая выбирается для всех клиентов, а «Скидочная», которая только для выборочных клиентов)
Главное окно карты клиента:
В карточке клиента нужно:
- Указать фотографию клиента
- Задать № карты, которая индивидуально выдается для каждого клиента администратором зала при создании карточки клиента в программе
- Указать Контактные данные, такие как:
- Ф.И.О.
- Дата рождения (если клиент не достиг 18 лет, тогда нужно добавить контактные данные родителей)
- Номер телефона клиента
- Адрес клиента
- Если требуется, можно задать скидку клиенту (*скидка задается в валюте, а не в %)
- Для информации можно задать начальный вес клиента (до занятий)
- Абонемент
- Карта
Порядок работы с созданием карточки клиента:
- Заполняем № карты и выдаем карту клиенту (например, пластиковую карту с набитым индивидуальным штрих-кодом или номером для каждого клиента)
- Заполняем Ф.И.О.
- Д\Р и если нужно информацию о родителях
- Номер телефона
- Адрес
- Начальный вес
- Выбираем абонемент (при изменении поля абонемент автоматически стоимость абонемента записывается в долг клиенту и показывается в информативном окне по центру карточки клиента, а также в зависимости от вида абонемента будет показано или первоначальное количество дней, выбранных клиентом из абонемента или дата начала и дата окончания, то есть период оплаченных тренировок).
Если, в типе абонемента стоит «Посещение» тогда при каждом приходе клиента на занятие, администратор зала должен открыть карточку клиента и нажать кнопку «Отчислить тренировку» где должен ввести (или просканировать, используя сканер штрих-кодов, штрих-код карты) № карты клиента
и если, № карты будет соответствовать карте клиенту то будет списано - 1 занятие.
Если, в типе абонемента стоит «Срок», тогда при каждом открытии карточки клиента будет показано, сколько дней еще осталось до конца оплаченного периода занятий по абонементу.
- Нужно заполнить поле Карта, которая в функционале не играет роли, а просто информативно отображает, к какой категории относится данный клиент («скидочный», «универсальный», например).
- Заполнить скидку (скидка заполняется в валюте, например, клиенту даем скидку на 10 грн.)
- Нажимаем «Изменить данные» (После нажатия происходит пересчет Стоимость абонемента – Скидка, например, 2500 – 10 = 2490 – это является долгом клиента, который он должен оплатить.
- Этот долг помещается в информативное поле + в это же поле помещается информация о скидке. А также, в зависимости от типа абонемента, в моем случае тип (вид) «Посещение», а значит, первоначальное количество посещений переместилось в карточку клиента для дальнейшего информационного указание о выборе дней по данному абонементу. Так же, автоматически рассчитывается остаток дней тренировок + активируется кнопка «Внести средства», если клиент «созрел» оплатить выбранный абонемент.
- Кнопка «Внести средства», во-первых, показывает информацию о текущем балансе клиента, да, клиент может «дать» администратору зала деньги, которые будут находиться на его виртуальном счете, во-вторых в данной форме есть возможность оплатить как наличными за выбранный абонемент, так и балансом.
Мы видим, что клиент наличными оплачивает администратору зала 3000 грн., а стоимость абонемента 2490, тогда разница в 510 грн. попадет клиенту на баланс.
И в последующем балансовые 510 грн. клиент может оплатить за следующий абонемент.
На этом создание и оплата клиентом выбранного абонемента окончена. Можно нажимать ЗаписатьИЗакрыть.
Порядок работы с продлением абонемента:
После окончания абонемента, нужно или перевыбрать существующий абонемент или выбрать новый, этим самым будет перестроено долг клиента, но данные еще не будут сохранены, а значит, в любой момент можем отказаться от изменений, закрыв карточку клиента, не соглашаясь на сохранение данных.
После изменения абонемента опять же, если нужно, указать скидку, а потом нажать кнопку «Изменить данные», этим самым «ПЕРЕЗАПИСЫВАЕМ» текущие данные на форме карточки клиента на новые данные по скидке, долгу, количеству дней или периоду посещения по абонементу.
! Бывает, что при создании карточки клиента, клиент не готов сразу оплатить выбранный абонемент, тогда создаем, описанным выше способом карточку клиента и тем самым по клиенту образуется долг и если клиент в будущем «созреет» оплатить свой долг тогда, как в карточке клиента, так и на форме отчета «Клиенты» есть кнопка «Корректировка долга»
после нажатия которой откроется список записей, где нужно отыскать запись (запись – это один цикл выбранного абонемента), по которой клиент хочет оплатить долг (ведь может быть, клиент задолжал еще и по предыдущему выбранному абонементу), открыть запись и в поле «Долг»
вписать результирующий долг после оплаты (например, осталось оплатить 100 грн., тогда в поле «Долг» пишем 100 грн).
Основные формы задокументированы нажатие F1
Тестировалось на релизе платформы 1С:Предприятие 8.3 (8.3.7.2008).
Только управляемые формы.
Конфигурация работает под «Толстый, Тонким, Web" клиентами.
Работает как локально, по сети, так и через интернет, используя веб-браузер.
Скачать конфигурацию можете по этой ссылке.
6 мар. 2016 г.
Обработка Новая почта
Реализовано создание получателя с типом контрагента «Частное лицо».
Реализовано возможность получения на дату списка электронных накладных с возможностью печати этих накладных.
Ниже пару скриншотов:
Теперь все кнопки и поля будут автоматически подгружать информацию из сервиса «Новой почты», узнавая вас по ключу.
19 февр. 2016 г.
ФИФО в запросе
ВЫБРАТЬ
ВложенныйЗапрос.Ссылка,
ВложенныйЗапрос.СуммаДокумента,
ВЫБОР
КОГДА ВложенныйЗапрос.СуммаДокументаИтог <= &Оплата
ТОГДА ВложенныйЗапрос.СуммаДокумента
ИНАЧЕ ВложенныйЗапрос.СуммаДокумента + &Оплата - ВложенныйЗапрос.СуммаДокументаИтог
КОНЕЦ КАК Оплата
ИЗ
(ВЫБРАТЬ
РасходнаяНакладная.Ссылка КАК Ссылка,
РасходнаяНакладная.СуммаДокумента КАК СуммаДокумента,
СУММА(РасходнаяНакладная1.СуммаДокумента) КАК СуммаДокументаИтог
ИЗ
Документ.РасходнаяНакладная КАК РасходнаяНакладная
ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнаяНакладная КАК РасходнаяНакладная1
ПО РасходнаяНакладная.МоментВремени >= РасходнаяНакладная1.МоментВремени
СГРУППИРОВАТЬ ПО
РасходнаяНакладная.Ссылка,
РасходнаяНакладная.СуммаДокумента) КАК ВложенныйЗапрос
ГДЕ
ВложенныйЗапрос.СуммаДокументаИтог - ВложенныйЗапрос.СуммаДокумента < &Оплата
УПОРЯДОЧИТЬ ПО
ВложенныйЗапрос.Ссылка.МоментВремени
Получить дату и время из строки
ДокументОбъект.Дата = ПолучитьДатуВремяИзСтроки(ДокументXDTO.Дата, ВремяСтрока);
Функция ПолучитьДатуВремяИзСтроки(ДатаСтрока, ВремяСтрока = "")
ДатаВремя = Дата(1,1,1);
Попытка
Если ТипЗнч(ДатаСтрока) = Тип("Дата")
И ТипЗнч(ВремяСтрока) = Тип("Дата") Тогда
ДатаВремя = Дата(Формат(ДатаСтрока, "ДФ=dd.MM.yyyy") + " " + Формат(ВремяСтрока, "ДЛФ=T"));
КонецЕсли;
Если ДатаВремя = Дата(1,1,1) Тогда
Если ЗначениеЗаполнено(ВремяСтрока) Тогда
Время = СтрЗаменить(ВремяСтрока, ":", "");
ДатаВремя = Дата(СтрЗаменить(ДатаСтрока, "-", "") + Время);
Иначе
ДатаВремя = Дата(СтрЗаменить(ДатаСтрока, "-", "") + "000000");
КонецЕсли;
КонецЕсли;
Исключение
КонецПопытки;
Возврат ДатаВремя;
КонецФункции
Срез последних с физической таблицы регистра сведений
Вот пример получения
ВЫБРАТЬ
ВложенныйЗапрос.Период,
ВложенныйЗапрос.Номенклатура,
ЦеныНоменклатуры.Цена
ИЗ
(ВЫБРАТЬ
МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период,
ЦеныНоменклатуры.Номенклатура КАК Номенклатура
ИЗ
РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
СГРУППИРОВАТЬ ПО
ЦеныНоменклатуры.Номенклатура) КАК ВложенныйЗапрос
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ПО ВложенныйЗапрос.Период = ЦеныНоменклатуры.Период
И ВложенныйЗапрос.Номенклатура = ЦеныНоменклатуры.Номенклатура
Удалить элемент дерева значений
Документ1
Товар1Документ2
Товар2
Товар1задача при перетаскивании Элементов из дерева (Товар1, Товар2 и т.д.), что бы эти элементы удалялись из дерева.
Товар2
Товар3
Выполняем
Возврат;
КонецЕсли;
ДеревоОтгрузка.ПолучитьЭлементы(), Элементы.Дерево.ТекущиеДанные.ПолучитьРодителя().ПолучитьЭлементы());
ТекИндекс=0;
Пока ЭлементыТекущегоУровняИерархии[ТекИндекс]<>Элементы.Дерево.ТекущиеДанные Цикл
ТекИндекс=ТекИндекс+1;
КонецЦикла;
ЭлементыТекущегоУровняИерархии.Удалить(ТекИндекс);
Сообщение пользователю 1С
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Обрати внимание!";
если на клиенте
Сообщение.Поле = "Объект.Контрагент";
Сообщение.Сообщить();
или
Сообщение.Поле = "Контрагент";
Сообщение.ПутьКДанным= "Объект";
Сообщение.Сообщить();
если на сервере
Сообщение.Поле = "Контрагент";
Сообщение.УстановитьДанные(РеквизитФормыВЗначение("Объект"));
Сообщение.Сообщить();
или
Сообщение.Поле = "Контрагент";
Сообщение.ПутьКДанным = "Объект"; // нюанс в том, что на сервере очень часто не известно, что такое "Объект" поэтому лучше использовать .УстановитьДанные()
Сообщение.Сообщить();
А вот пример где нужно указать на поле в Табличной части
Объект.Запасы – Табличная часть
Номенклатура – поле, на которое хочу установить активность
Индекс - в данном случаи нужно обращаться по индексу, а не по Номеру строки
Для Каждого Строка Из Объект.Запасы Цикл
Сообщение = Новый СообщениеПользователю;
Индекс = Объект.Запасы.Индекс(Строка);
Сообщение.Текст = "Пользователь, обрати внимание "+Строка.Номенклатура+" на это поле";
Сообщение.Поле = "Объект.Запасы["+Индекс+"-1].Номенклатура";
Сообщение.Сообщить();
КонецЦикла;
9 февр. 2016 г.
Программное удаление реквизитов и элементов формы
УдаляемыеРеквизитыТЗ = Новый Массив; ТЗ = СтрокиРабочийТабель.Выгрузить(); // СтрокиРабочийТабель – это ТаблицаЗначений на форме УдаляемыеРеквизитыТЗ.Добавить(СтрокиРабочийТабель.Линия1); // добавляемв массив сначала реквизиты, который нужно удалить Элементы.Удалить(Элементы[Линия1]); // теперь добавляем в массив элементы формы, которые нужно удалить ЭтаФорма.ИзменитьРеквизиты(, УдаляемыеРеквизитыТЗ); // непосредственное удаление реквизитов с помощью метода управляемой формы
Транслит в 1С
Функция Транслит(КириллическоеСлово)
Рез = СокрЛП(КириллическоеСлово);
Рез = СтрЗаменить(Рез,"а","a");
Рез = СтрЗаменить(Рез,"б","b");
Рез = СтрЗаменить(Рез,"в","v");
Рез = СтрЗаменить(Рез,"г","g");
Рез = СтрЗаменить(Рез,"д","d");
Рез = СтрЗаменить(Рез,"е","e");
Рез = СтрЗаменить(Рез,"ё","e");
Рез = СтрЗаменить(Рез,"ж","zh");
Рез = СтрЗаменить(Рез,"з","z");
Рез = СтрЗаменить(Рез,"и","i");
Рез = СтрЗаменить(Рез,"к","k");
Рез = СтрЗаменить(Рез,"л","l");
Рез = СтрЗаменить(Рез,"м","m");
Рез = СтрЗаменить(Рез,"н","n");
Рез = СтрЗаменить(Рез,"о","o");
Рез = СтрЗаменить(Рез,"п","p");
Рез = СтрЗаменить(Рез,"р","r");
Рез = СтрЗаменить(Рез,"с","s");
Рез = СтрЗаменить(Рез,"т","t");
Рез = СтрЗаменить(Рез,"у","u");
Рез = СтрЗаменить(Рез,"ф","f");
Рез = СтрЗаменить(Рез,"х","h");
Рез = СтрЗаменить(Рез,"ч","ch");
Рез = СтрЗаменить(Рез,"ш","sh");
Рез = СтрЗаменить(Рез,"щ","sch");
Рез = СтрЗаменить(Рез,"ъ","");
Рез = СтрЗаменить(Рез,"ь","");
Рез = СтрЗаменить(Рез,"э","e");
Рез = СтрЗаменить(Рез,"ю","yu");
Рез = СтрЗаменить(Рез,"й","i");
Рез = СтрЗаменить(Рез,"ц","c");
Рез = СтрЗаменить(Рез,"я","ya");
Рез = СтрЗаменить(Рез,"ы","i");
Рез = СтрЗаменить(Рез,"А","A");
Рез = СтрЗаменить(Рез,"Б","B");
Рез = СтрЗаменить(Рез,"В","V");
Рез = СтрЗаменить(Рез,"Г","G");
Рез = СтрЗаменить(Рез,"Д","D");
Рез = СтрЗаменить(Рез,"Е","E");
Рез = СтрЗаменить(Рез,"Ё","E");
Рез = СтрЗаменить(Рез,"Ж","ZH");
Рез = СтрЗаменить(Рез,"З","Z");
Рез = СтрЗаменить(Рез,"И","I");
Рез = СтрЗаменить(Рез,"К","K");
Рез = СтрЗаменить(Рез,"Л","L");
Рез = СтрЗаменить(Рез,"М","M");
Рез = СтрЗаменить(Рез,"Н","N");
Рез = СтрЗаменить(Рез,"О","O");
Рез = СтрЗаменить(Рез,"П","P");
Рез = СтрЗаменить(Рез,"Р","R");
Рез = СтрЗаменить(Рез,"С","S");
Рез = СтрЗаменить(Рез,"Т","T");
Рез = СтрЗаменить(Рез,"У","U");
Рез = СтрЗаменить(Рез,"Ф","F");
Рез = СтрЗаменить(Рез,"Х","H");
Рез = СтрЗаменить(Рез,"Ч","CH");
Рез = СтрЗаменить(Рез,"Ш","SH");
Рез = СтрЗаменить(Рез,"Щ","SCH");
Рез = СтрЗаменить(Рез,"Ъ","");
Рез = СтрЗаменить(Рез,"Ь","");
Рез = СтрЗаменить(Рез,"Ы","I");
Рез = СтрЗаменить(Рез,"Ц","C");
Рез = СтрЗаменить(Рез,"Э","E");
Рез = СтрЗаменить(Рез,"Ю","YU");
Рез = СтрЗаменить(Рез,"Я","YA");
Рез = СтрЗаменить(Рез,"Й","I");
Возврат(ЛатыньскоеСлово);
КонецФункции
Передать в параметр Таблицу значений
- значит на кнопке, формы источника:
&НаКлиенте!Во всякие там ХранилищаЗначений и ВременноеХранилище нельзя передавать ТаблицуЗначений поэтому поместили в Массив ТаблицуЗначений, а на форме это ДанныеФормыКоллекция, а потом этот Массив завернули в Структуру, а этот уже объект без проблем передается в качестве параметра открываемой форме.
Процедура ПрайсЛистПоставщика(Команда)
Массив = Новый Массив;
Массив.Добавить(Объект.СписокЗагрузки);
ОткрытьФорму("Обработка.ЗагрузкаИзЭлектроннойТаблицы.Форма.ПрайсЛистПоставщика",Новый Структура("ТЗ",Массив));
КонецПроцедуры
- а на форме, в которую нужно получить Табличку
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Объект.ПрайсПоставщика.Загрузить(параметры.ТЗ[0].Выгрузить());
КонецПроцедуры
28 дек. 2015 г.
Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{ОбщийМодуль.ДополнительныеМеханизмы.Модуль(62)}: Ошибка при вызове метода контекста (Open)
Connection.Open(СокрЛП(СтрокаСоединения));
по причине:
Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию
24 дек. 2015 г.
Выключить компьютер удаленно
C:\PSTools\psshutdown.exe -d -t 05PSTools качаем вот здесь и распаковываем в корень диска C:\, после распаковки нужно единажды запустить файл psshutdown.exe и согласиться с лицензией.
Значит выше команда означает, запустить файл psshutdown.exe который расположен по пути C:\PSTools с параметрами, а именно этот файл, точнее утилита дает возможность выключать, перезагружать и т.д. компьютер, параметр -d означает "сон",, а -t 05 означает выполнение команды через 5 секунд.
Теперь на андроид устройстве нужно установить программу SSH button и настроить
- Label - наименование подключения
- Command - будет запущен файл, в котором у нас прописано моментальный перевод компьютер в режим "сна"
- SSH hostname - IP адрес компьютера, на котором установлен FreeSSHd
- SSH username - пользователь, который был создан при установке сервера FreeSSHd
- SSH password - пароль, который был создан при установке сервера FreeSSHd
- SSH port - порт по умолчанию 22-ой, на нем работает наш FreeSSHd сервер