mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Add 1C (BSL) language support
This commit is contained in:
		
							
								
								
									
										3
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							| @@ -758,3 +758,6 @@ url = https://github.com/austinwagner/sublime-sourcepawn | |||||||
| [submodule "vendor/grammars/language-asn1"] | [submodule "vendor/grammars/language-asn1"] | ||||||
| 	path = vendor/grammars/language-asn1 | 	path = vendor/grammars/language-asn1 | ||||||
| 	url = https://github.com/ajLangley12/language-asn1 | 	url = https://github.com/ajLangley12/language-asn1 | ||||||
|  | [submodule "vendor/grammars/atom-language-1c-bsl"] | ||||||
|  | 	path = vendor/grammars/atom-language-1c-bsl | ||||||
|  | 	url = https://github.com/xDrivenDevelopment/atom-language-1c-bsl.git | ||||||
|   | |||||||
| @@ -181,6 +181,9 @@ vendor/grammars/atom-fsharp/: | |||||||
| - source.fsharp.fsi | - source.fsharp.fsi | ||||||
| - source.fsharp.fsl | - source.fsharp.fsl | ||||||
| - source.fsharp.fsx | - source.fsharp.fsx | ||||||
|  | vendor/grammars/atom-language-1c-bsl: | ||||||
|  | - source.bsl | ||||||
|  | - source.sdbl | ||||||
| vendor/grammars/atom-language-clean: | vendor/grammars/atom-language-clean: | ||||||
| - source.clean | - source.clean | ||||||
| vendor/grammars/atom-language-purescript/: | vendor/grammars/atom-language-purescript/: | ||||||
|   | |||||||
| @@ -27,6 +27,15 @@ | |||||||
| # | # | ||||||
| # Please keep this list alphabetized. Capitalization comes before lower case. | # Please keep this list alphabetized. Capitalization comes before lower case. | ||||||
|  |  | ||||||
|  | 1C Enterprise: | ||||||
|  |   type: programming | ||||||
|  |   color: "#814CCC" | ||||||
|  |   extensions: | ||||||
|  |   - .bsl | ||||||
|  |   - .os | ||||||
|  |   tm_scope: source.bsl | ||||||
|  |   ace_mode: text | ||||||
|  |  | ||||||
| ABAP: | ABAP: | ||||||
|   type: programming |   type: programming | ||||||
|   color: "#E8274B" |   color: "#E8274B" | ||||||
|   | |||||||
| @@ -0,0 +1,265 @@ | |||||||
|  | &НаСервереБезКонтекста | ||||||
|  | Функция ПолучитьКонтактноеЛицоПоЭлектроннойПочте(ЭлектроннаяПочта) | ||||||
|  | 	Запрос = Новый Запрос; | ||||||
|  | 	Запрос.Текст = "ВЫБРАТЬ КонтактноеЛицо ИЗ Справочник.Контрагенты ГДЕ ЭлектроннаяПочта = &ЭлектроннаяПочта"; | ||||||
|  | 	Запрос.Параметры.Вставить("ЭлектроннаяПочта", СокрЛП(ЭлектроннаяПочта)); | ||||||
|  | 	Выборка = Запрос.Выполнить().Выбрать(); | ||||||
|  | 	КонтактноеЛицо = ""; | ||||||
|  | 	Если Выборка.Следующий() Тогда | ||||||
|  | 		КонтактноеЛицо = Выборка.КонтактноеЛицо; | ||||||
|  | 	КонецЕсли; | ||||||
|  | 	Возврат КонтактноеЛицо; | ||||||
|  | КонецФункции | ||||||
|  |  | ||||||
|  | &НаСервереБезКонтекста | ||||||
|  | Функция ПолучитьКонтактноеЛицоПоПолучателю(Получатель) | ||||||
|  | 	Запрос = Новый Запрос; | ||||||
|  | 	Запрос.Текст = "ВЫБРАТЬ КонтактноеЛицо ИЗ Справочник.Контрагенты ГДЕ Ссылка = &Получатель"; | ||||||
|  | 	Запрос.Параметры.Вставить("Получатель", Получатель); | ||||||
|  | 	Выборка = Запрос.Выполнить().Выбрать(); | ||||||
|  | 	КонтактноеЛицо = ""; | ||||||
|  | 	Если Выборка.Следующий() Тогда | ||||||
|  | 		КонтактноеЛицо = Выборка.КонтактноеЛицо; | ||||||
|  | 	КонецЕсли; | ||||||
|  | 	Возврат КонтактноеЛицо; | ||||||
|  | КонецФункции | ||||||
|  |  | ||||||
|  | &НаСервереБезКонтекста | ||||||
|  | Процедура ДобавитьПолучателей(Получатель, Получатели)	 | ||||||
|  | 	Запрос = Новый Запрос; | ||||||
|  | 	Запрос.Текст = "ВЫБРАТЬ ЭлектроннаяПочта ИЗ Справочник.Контрагенты ГДЕ Ссылка "; | ||||||
|  | 	Если ТипЗнч(Получатели) = Тип("Массив") Тогда | ||||||
|  | 		Запрос.Текст = Запрос.Текст + "В (&Получатели)"; | ||||||
|  | 	Иначе | ||||||
|  | 		Запрос.Текст = Запрос.Текст + "= &Получатели"; | ||||||
|  | 	КонецЕсли; | ||||||
|  | 	Запрос.Параметры.Вставить("Получатели", Получатели); | ||||||
|  | 	Выборка = Запрос.Выполнить().Выбрать(); | ||||||
|  | 	Пока Выборка.Следующий() Цикл | ||||||
|  | 		Если Получатель <> "" Тогда | ||||||
|  | 			Получатель = Получатель + "; "; | ||||||
|  | 		КонецЕсли; | ||||||
|  | 		Получатель = Получатель + Выборка.ЭлектроннаяПочта; | ||||||
|  | 	КонецЦикла; | ||||||
|  | КонецПроцедуры | ||||||
|  |  | ||||||
|  | &НаСервере | ||||||
|  | Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) | ||||||
|  | 	Если Параметры.Ключ.Пустая() Тогда | ||||||
|  | 		Заголовок = "Исходящее письмо (Создание)"; | ||||||
|  | 		Объект.Дата = ТекущаяДата(); | ||||||
|  | 		ПоШаблону = Параметры.Свойство("ПоШаблону"); | ||||||
|  | 		ВходящееПисьмо = Параметры.ВходящееПисьмо; | ||||||
|  | 		Если ПоШаблону = Истина Тогда | ||||||
|  | 			Элементы.ЗаполнитьПоШаблону.Видимость = Истина; | ||||||
|  | 			РаботаСПочтой.ЗаполнитьПисьмоПоШаблону(Объект, Содержимое); | ||||||
|  | 		ИначеЕсли Не ВходящееПисьмо.Пустая() Тогда | ||||||
|  | 			РаботаСПочтой.ЗаполнитьОтветНаПисьмо(ВходящееПисьмо, Объект, Содержимое); | ||||||
|  | 		КонецЕсли; | ||||||
|  | 		Адресаты = Параметры.Адресаты; | ||||||
|  | 		Если Адресаты <> Неопределено Тогда | ||||||
|  | 			Запрос = Новый Запрос; | ||||||
|  | 			Запрос.Текст = "ВЫБРАТЬ | ||||||
|  | 			               |	Контрагенты.ЭлектроннаяПочта | ||||||
|  | 			               |ИЗ | ||||||
|  | 			               |	Справочник.Контрагенты КАК Контрагенты | ||||||
|  | 			               |ГДЕ | ||||||
|  | 			               |	Контрагенты.Ссылка В(&Адресаты) | ||||||
|  | 			               |	И Контрагенты.ЭлектроннаяПочта <> """""; | ||||||
|  | 			Запрос.УстановитьПараметр("Адресаты", Адресаты);			    | ||||||
|  | 			Получатель = ""; | ||||||
|  | 			Выборка = Запрос.Выполнить().Выбрать(); | ||||||
|  | 			Пока Выборка.Следующий() Цикл | ||||||
|  | 				Если Получатель <> "" Тогда | ||||||
|  | 					Получатель = Получатель + "; "; | ||||||
|  | 				КонецЕсли; | ||||||
|  | 				Получатель = Получатель + Выборка.ЭлектроннаяПочта; | ||||||
|  | 			КонецЦикла; | ||||||
|  | 			Объект.Получатель = Получатель; | ||||||
|  | 		КонецЕсли; | ||||||
|  | 	КонецЕсли; | ||||||
|  | КонецПроцедуры | ||||||
|  |  | ||||||
|  | &НаСервере | ||||||
|  | Процедура ПриЧтенииНаСервере(ТекущийОбъект) | ||||||
|  | 	Содержимое = ТекущийОбъект.Содержимое.Получить(); | ||||||
|  | 	Заголовок = ТекущийОбъект.Наименование + " (Исходящее письмо)"; | ||||||
|  | 	Если  РаботаСПочтой.ПисьмоОтправлено(ТекущийОбъект.Ссылка) Тогда | ||||||
|  | 		Заголовок = Заголовок + " - Отправлено"; | ||||||
|  | 	КонецЕсли; | ||||||
|  | КонецПроцедуры | ||||||
|  |  | ||||||
|  | &НаСервере | ||||||
|  | Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) | ||||||
|  | 	ТекущийОбъект.Содержимое = Новый ХранилищеЗначения(Содержимое, Новый СжатиеДанных()); | ||||||
|  | 	ТекущийОбъект.Текст = Содержимое.ПолучитьТекст(); | ||||||
|  | КонецПроцедуры | ||||||
|  |  | ||||||
|  | &НаСервере | ||||||
|  | Функция ОтправитьПисьмо(Ошибка) | ||||||
|  | 	Если Не Записать() Тогда | ||||||
|  | 		Ошибка = "ОшибкаЗаписи"; | ||||||
|  | 		Возврат Ложь; | ||||||
|  | 	КонецЕсли; | ||||||
|  | 	Если Не РаботаСПочтой.ОтправитьПисьмо(Объект.Ссылка) Тогда | ||||||
|  | 		Ошибка = "ОшибкаОтправки"; | ||||||
|  | 		Возврат Ложь; | ||||||
|  | 	КонецЕсли; | ||||||
|  | 	Заголовок = Заголовок + " - Отправлено"; | ||||||
|  | 	Возврат Истина; | ||||||
|  | КонецФункции | ||||||
|  |  | ||||||
|  | &НаКлиенте | ||||||
|  | Функция ОтправитьПисьмоКлиент() | ||||||
|  | 	Ошибка = ""; | ||||||
|  | 	Если Не ОтправитьПисьмо(Ошибка) Тогда | ||||||
|  | 		Если Ошибка = "ОшибкаОтправки" Тогда | ||||||
|  | 			Кнопки = Новый СписокЗначений; | ||||||
|  | 			Кнопки.Добавить(1, "Настроить почту"); | ||||||
|  | 			Кнопки.Добавить(2, "Закрыть"); | ||||||
|  | 			 | ||||||
|  | 			Оп = Новый ОписаниеОповещения( | ||||||
|  | 				"ОтправитьПисьмоКлиентВопросЗавершение", | ||||||
|  | 				ЭтотОбъект); | ||||||
|  | 			ПоказатьВопрос(Оп, | ||||||
|  | 				"Не указаны настройки интернет почты!",  | ||||||
|  | 				Кнопки, , 1); | ||||||
|  | 		КонецЕсли; | ||||||
|  | 		Возврат Ложь; | ||||||
|  | 	КонецЕсли; | ||||||
|  | 	 | ||||||
|  | 	НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(Объект.Ссылка); | ||||||
|  | 	ПоказатьОповещениеПользователя("Письмо отправлено", НавигационнаяСсылка, Объект.Наименование); | ||||||
|  | 	ОповеститьОбИзменении(Объект.Ссылка); | ||||||
|  | 	Возврат Истина; | ||||||
|  | КонецФункции | ||||||
|  |  | ||||||
|  | &НаКлиенте | ||||||
|  | Процедура ОтправитьПисьмоКлиентВопросЗавершение(Результат, Параметры) Экспорт | ||||||
|  | 	Если Результат = 1 Тогда | ||||||
|  | 		ОткрытьФорму("ОбщаяФорма.НастройкаПочты"); | ||||||
|  | 	КонецЕсли; | ||||||
|  | КонецПроцедуры | ||||||
|  |  | ||||||
|  | &НаКлиенте | ||||||
|  | Процедура Отправить(Команда) | ||||||
|  | 	ОтправитьПисьмоКлиент(); | ||||||
|  | КонецПроцедуры | ||||||
|  |  | ||||||
|  | &НаКлиенте | ||||||
|  | Процедура ОтправитьИЗакрыть(Команда) | ||||||
|  | 	Если Не ОтправитьПисьмоКлиент() Тогда | ||||||
|  | 		Возврат; | ||||||
|  | 	КонецЕсли; | ||||||
|  | 	Закрыть(); | ||||||
|  | КонецПроцедуры | ||||||
|  |  | ||||||
|  | &НаКлиенте | ||||||
|  | Процедура ВставитьСтрокуВТекущуюПозицию(Поле, Документ, Строка) | ||||||
|  | 	Перем Начало, Конец; | ||||||
|  | 	Поле.ПолучитьГраницыВыделения(Начало, Конец); | ||||||
|  | 	Позиция = Документ.ПолучитьПозициюПоЗакладке(Начало); | ||||||
|  | 	Документ.Удалить(Начало, Конец); | ||||||
|  | 	Начало = Документ.ПолучитьЗакладкуПоПозиции(Позиция); | ||||||
|  | 	Документ.Вставить(Начало, Строка); | ||||||
|  | 	Позиция = Позиция + СтрДлина(Строка); | ||||||
|  | 	Закладка = Документ.ПолучитьЗакладкуПоПозиции(Позиция); | ||||||
|  | 	Поле.УстановитьГраницыВыделения(Закладка, Закладка); | ||||||
|  | КонецПроцедуры | ||||||
|  |  | ||||||
|  | &НаКлиенте | ||||||
|  | Процедура ВставитьКонтактноеЛицо(Команда) | ||||||
|  | 	Если Объект.Контрагент.Пустая() Тогда | ||||||
|  | 		Сообщить("Выберите контрагента"); | ||||||
|  | 	Иначе | ||||||
|  | 		КонтактноеЛицо = ПолучитьКонтактноеЛицоПоПолучателю(Объект.Контрагент); | ||||||
|  | 		ВставитьСтрокуВТекущуюПозицию(Элементы.Содержимое, Содержимое, КонтактноеЛицо + " "); | ||||||
|  | 	КонецЕсли;	 | ||||||
|  | КонецПроцедуры | ||||||
|  |  | ||||||
|  | &НаСервере | ||||||
|  | Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) | ||||||
|  | 	Заголовок = ТекущийОбъект.Наименование + " (Исходящее письмо)"; | ||||||
|  | КонецПроцедуры | ||||||
|  |  | ||||||
|  | &НаКлиенте | ||||||
|  | Процедура КонтрагентПриИзменении(Элемент) | ||||||
|  | 	ДобавитьПолучателей(Объект.Получатель, Объект.Контрагент); | ||||||
|  | КонецПроцедуры | ||||||
|  |  | ||||||
|  | &НаКлиенте | ||||||
|  | Процедура ВыделитьВажное(Команда) | ||||||
|  | 	Перем Начало, Конец; | ||||||
|  |     ВсеВажное = Истина; | ||||||
|  |     Элементы.Содержимое.ПолучитьГраницыВыделения(Начало, Конец); | ||||||
|  |     Если Начало = Конец Тогда | ||||||
|  |         Возврат; | ||||||
|  |     КонецЕсли; | ||||||
|  |      | ||||||
|  |     НаборТекстовыхЭлементов = Новый Массив(); | ||||||
|  |     Для Каждого ТекстовыйЭлемент Из Содержимое.СформироватьЭлементы(Начало, Конец) Цикл | ||||||
|  |         Если Тип(ТекстовыйЭлемент) = Тип("ТекстФорматированногоДокумента") Тогда | ||||||
|  |             НаборТекстовыхЭлементов.Добавить(ТекстовыйЭлемент);     | ||||||
|  |         КонецЕсли;     | ||||||
|  |     КонецЦикла; | ||||||
|  |      | ||||||
|  |     Для Каждого ТекстовыйЭлемент Из НаборТекстовыхЭлементов Цикл | ||||||
|  |         Если ТекстовыйЭлемент.Шрифт.Жирный <> Истина И | ||||||
|  |             ТекстовыйЭлемент.ЦветТекста <> Новый Цвет(255, 0, 0) Тогда | ||||||
|  |             ВсеВажное = Ложь; | ||||||
|  |             Прервать; | ||||||
|  |         КонецЕсли; | ||||||
|  |     КонецЦикла; | ||||||
|  |      | ||||||
|  |     Для Каждого ТекстовыйЭлемент Из НаборТекстовыхЭлементов Цикл | ||||||
|  |         ТекстовыйЭлемент.Шрифт = Новый Шрифт(ТекстовыйЭлемент.Шрифт, , , Не ВсеВажное); | ||||||
|  |         ТекстовыйЭлемент.ЦветТекста = Новый Цвет(?(ВсеВажное, 0, 255), 0, 0); | ||||||
|  |     КонецЦикла; | ||||||
|  | КонецПроцедуры | ||||||
|  |  | ||||||
|  | &НаКлиенте | ||||||
|  | Процедура ЗаполнитьПоШаблону(Команда) | ||||||
|  | 	Если Объект.Контрагент.Пустая() Тогда | ||||||
|  | 		Сообщить("Выберите контрагента"); | ||||||
|  | 	Иначе | ||||||
|  | 		НайтиИЗаменить("[Контрагент]", Объект.Контрагент); | ||||||
|  | 		НайтиИЗаменить("[КонтактноеЛицо]", ПолучитьКонтактноеЛицоПоПолучателю(Объект.Контрагент)); | ||||||
|  | 	КонецЕсли; | ||||||
|  | 	НайтиИЗаменить("[ДатаПисьма]", Объект.Дата); | ||||||
|  | КонецПроцедуры | ||||||
|  |  | ||||||
|  | &НаКлиенте | ||||||
|  | Процедура НайтиИЗаменить(СтрокаДляПоиска, СтрокаДляЗамены) | ||||||
|  | 	Перем ВставленныйТекст, ШрифтОформления, ЦветТекстаОформления, ЦветФонаОформления, НавигационнаяСсылкаОформления; | ||||||
|  | 	РезультатПоиска = Содержимое.НайтиТекст(СтрокаДляПоиска); | ||||||
|  | 	Пока ((РезультатПоиска <> Неопределено) И (РезультатПоиска.ЗакладкаНачала <> Неопределено) И (РезультатПоиска.ЗакладкаКонца <> Неопределено)) Цикл | ||||||
|  | 		ПозицияНачалаСледующегоЦиклаПоиска = Содержимое.ПолучитьПозициюПоЗакладке(РезультатПоиска.ЗакладкаНачала) + СтрДлина(СтрокаДляЗамены); | ||||||
|  | 		МассивЭлементовДляОформления = Содержимое.ПолучитьЭлементы(РезультатПоиска.ЗакладкаНачала, РезультатПоиска.ЗакладкаКонца); | ||||||
|  | 		Для Каждого ЭлементДляОформления Из МассивЭлементовДляОформления Цикл | ||||||
|  | 			Если Тип(ЭлементДляОформления) = Тип("ТекстФорматированногоДокумента") Тогда | ||||||
|  | 				ШрифтОформления = ЭлементДляОформления.Шрифт; | ||||||
|  | 				ЦветТекстаОформления = ЭлементДляОформления.ЦветТекста; | ||||||
|  | 				ЦветФонаОформления = ЭлементДляОформления.ЦветФона; | ||||||
|  | 				НавигационнаяСсылкаОформления = ЭлементДляОформления.НавигационнаяССылка; | ||||||
|  | 				Прервать; | ||||||
|  | 			КонецЕсли; | ||||||
|  | 		КонецЦикла;	 | ||||||
|  | 		Содержимое.Удалить(РезультатПоиска.ЗакладкаНачала, РезультатПоиска.ЗакладкаКонца); | ||||||
|  | 		ВставленныйТекст = Содержимое.Вставить(РезультатПоиска.ЗакладкаНачала, СтрокаДляЗамены); | ||||||
|  | 		Если ВставленныйТекст <> Неопределено И ШрифтОформления <> Неопределено Тогда | ||||||
|  | 			ВставленныйТекст.Шрифт = ШрифтОформления; | ||||||
|  | 		КонецЕсли; | ||||||
|  | 		Если ВставленныйТекст <> Неопределено И ЦветТекстаОформления <> Неопределено Тогда | ||||||
|  | 			ВставленныйТекст.ЦветТекста = ЦветТекстаОформления; | ||||||
|  | 		КонецЕсли; | ||||||
|  | 		Если ВставленныйТекст <> Неопределено И ЦветФонаОформления <> Неопределено Тогда | ||||||
|  | 			ВставленныйТекст.ЦветФона = ЦветФонаОформления; | ||||||
|  | 		КонецЕсли; | ||||||
|  | 		Если ВставленныйТекст <> Неопределено И НавигационнаяСсылкаОформления <> Неопределено Тогда | ||||||
|  | 			ВставленныйТекст.НавигационнаяССылка = НавигационнаяСсылкаОформления; | ||||||
|  | 		КонецЕсли; | ||||||
|  | 		 | ||||||
|  | 		РезультатПоиска = Содержимое.НайтиТекст(СтрокаДляПоиска, Содержимое.ПолучитьЗакладкуПоПозиции(ПозицияНачалаСледующегоЦиклаПоиска)); | ||||||
|  | 	КонецЦикла; | ||||||
|  | КонецПроцедуры | ||||||
|  |  | ||||||
| @@ -0,0 +1,85 @@ | |||||||
|  | &НаСервере | ||||||
|  | Функция ПечатнаяФорма(ПараметрКоманды) | ||||||
|  | 	ТабличныйДокумент = Новый ТабличныйДокумент; | ||||||
|  | 	ТабличныйДокумент.ОтображатьСетку = Истина; | ||||||
|  | 	ТабличныйДокумент.ОтображатьЗаголовки = Истина; | ||||||
|  | 	 | ||||||
|  | 	Сформирован = Ложь; | ||||||
|  | 	ТабМакет = Справочники.Товары.ПолучитьМакет("МакетПрайсЛиста");  | ||||||
|  |  | ||||||
|  | 	Шапка = ТабМакет.ПолучитьОбласть("Шапка"); | ||||||
|  | 	ТабличныйДокумент.Вывести(Шапка); | ||||||
|  |  | ||||||
|  | 	ОбластьНоменклатура = ТабМакет.ПолучитьОбласть("ОбластьНоменклатура"); | ||||||
|  | 	 | ||||||
|  | 	Запрос = Новый Запрос; | ||||||
|  |     Запрос.Текст =  "ВЫБРАТЬ | ||||||
|  |                     |    Товары.Код КАК Код, | ||||||
|  |                     |    Товары.Наименование КАК Наименование, | ||||||
|  |                     |    Товары.Артикул КАК Артикул, | ||||||
|  |                     |    Товары.ФайлКартинки КАК Картинка, | ||||||
|  |                     |    Товары.Описание КАК Описание, | ||||||
|  |                     |    Товары.Вид КАК Вид, | ||||||
|  |                     |    ЦеныТоваров.Цена КАК Цена | ||||||
|  |                     |ИЗ | ||||||
|  |                     |    РегистрСведений.ЦеныТоваров КАК ЦеныТоваров | ||||||
|  |                     |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Товары КАК Товары | ||||||
|  |                     |        ПО ЦеныТоваров.Товар = Товары.Ссылка | ||||||
|  |                     |ГДЕ | ||||||
|  |                     |    Товары.ЭтоГруппа = ЛОЖЬ | ||||||
|  |                     |    И ЦеныТоваров.ВидЦен = &ВидЦен | ||||||
|  |                     | | ||||||
|  |                     |УПОРЯДОЧИТЬ ПО | ||||||
|  |                     |    Вид, | ||||||
|  |                     |    Товары.Родитель.Код, | ||||||
|  |                     |    Код"; | ||||||
|  |  | ||||||
|  |     Запрос.УстановитьПараметр("ВидЦен", Справочники.ВидыЦен.НайтиПоНаименованию("Розничная")); | ||||||
|  | 						 | ||||||
|  | 	Выборка = Запрос.Выполнить().Выбрать(); | ||||||
|  | 	Пока Выборка.Следующий() Цикл | ||||||
|  | 		ОбластьНоменклатура.Параметры.Заполнить(Выборка); | ||||||
|  | 		 | ||||||
|  | 		Описание = ""; | ||||||
|  | 		 | ||||||
|  | 		Чтение = Новый ЧтениеHTML(); | ||||||
|  | 		Чтение.УстановитьСтроку(Выборка.Описание); | ||||||
|  | 		 | ||||||
|  | 		ДокDOM = Новый ПостроительDOM(); | ||||||
|  | 		HTML = ДокDOM.Прочитать(Чтение); | ||||||
|  | 		 | ||||||
|  | 		Если Не HTML.ЭлементДокумента = Неопределено Тогда | ||||||
|  | 			Для Каждого Узел из HTML.ЭлементДокумента.ДочерниеУзлы Цикл  | ||||||
|  | 				Если Узел.ИмяУзла = "body" Тогда | ||||||
|  | 					Для Каждого ЭлементОписания из Узел.ДочерниеУзлы Цикл  | ||||||
|  | 						Описание = Описание + ЭлементОписания.ТекстовоеСодержимое; | ||||||
|  | 					КонецЦикла; | ||||||
|  | 				КонецЕсли; | ||||||
|  | 			КонецЦикла; | ||||||
|  | 		КонецЕсли; | ||||||
|  | 		ОбластьНоменклатура.Параметры.Описание = Описание; | ||||||
|  | 		 | ||||||
|  | 		Если (Выборка.Картинка <> Null) Тогда  | ||||||
|  | 			ОбластьНоменклатура.Параметры.ПараметрКартинки = Новый Картинка(Выборка.Картинка.ДанныеФайла.Получить()); | ||||||
|  | 		КонецЕсли; | ||||||
|  | 		 | ||||||
|  | 		ТабличныйДокумент.Вывести(ОбластьНоменклатура, Выборка.Уровень()); | ||||||
|  | 		Сформирован = Истина; | ||||||
|  | 	КонецЦикла; | ||||||
|  | 	 | ||||||
|  | 	Если Сформирован Тогда | ||||||
|  | 		Возврат ТабличныйДокумент; | ||||||
|  | 	Иначе 	 | ||||||
|  | 		Возврат Неопределено; | ||||||
|  | 	КонецЕсли;	 | ||||||
|  | КонецФункции | ||||||
|  |  | ||||||
|  | &НаКлиенте | ||||||
|  | Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) | ||||||
|  | 	ТабличныйДокумент = ПечатнаяФорма(ПараметрКоманды); | ||||||
|  | 	 | ||||||
|  | 	Если ТабличныйДокумент <> Неопределено Тогда | ||||||
|  | 		ТабличныйДокумент.Показать(); | ||||||
|  | 	КонецЕсли;	 | ||||||
|  | 	 | ||||||
|  | КонецПроцедуры | ||||||
| @@ -0,0 +1,109 @@ | |||||||
|  | // Процедура на основании анализа типа данных заменяет их на данные, удаляющие | ||||||
|  | // информацию из узла в котором их не должно быть | ||||||
|  | // | ||||||
|  | // Параметры: | ||||||
|  | //  Данные	– Объект, набор записей,... который нужно преобразовать | ||||||
|  | // | ||||||
|  | Процедура УдалениеДанных(Данные)  | ||||||
|  | 	 | ||||||
|  | 	// Получаем объект описания метаданного, соответствующий данным | ||||||
|  | 	ОбъектМетаданных = ?(ТипЗнч(Данные) = Тип("УдалениеОбъекта"), Данные.Ссылка.Метаданные(), Данные.Метаданные()); | ||||||
|  |     // Проверяем тип, интересуют только те типы, которые реализованы на мобильной платформе | ||||||
|  | 	Если Метаданные.Справочники.Содержит(ОбъектМетаданных) | ||||||
|  | 	 	ИЛИ Метаданные.Документы.Содержит(ОбъектМетаданных) Тогда | ||||||
|  | 		 | ||||||
|  | 		// Перенос удаления объекта для объектных | ||||||
|  | 		Данные = Новый УдалениеОбъекта(Данные.Ссылка); | ||||||
|  | 		 | ||||||
|  | 	ИначеЕсли Метаданные.РегистрыСведений.Содержит(ОбъектМетаданных) | ||||||
|  | 		ИЛИ Метаданные.РегистрыНакопления.Содержит(ОбъектМетаданных) | ||||||
|  | 		ИЛИ Метаданные.Последовательности.Содержит(ОбъектМетаданных) Тогда | ||||||
|  | 		 | ||||||
|  | 		// Очищаем данные | ||||||
|  | 		Данные.Очистить(); | ||||||
|  | 		 | ||||||
|  | 	КонецЕсли;	 | ||||||
|  | 	 | ||||||
|  | КонецПроцедуры | ||||||
|  |  | ||||||
|  | // Функция формирует пакет обмена, который будет отправлен узлу "УзелОбмена"  | ||||||
|  | // | ||||||
|  | // Параметры: | ||||||
|  | //  УзелОбмена	– узел плана обмена "мобильные", с которым осуществляется обмен | ||||||
|  | // | ||||||
|  | // Возвращаемое значение: | ||||||
|  | //  сформированный пакет, помещенный в хранилище значения | ||||||
|  | Функция СформироватьПакетОбмена(УзелОбмена) Экспорт | ||||||
|  |      | ||||||
|  | 	ЗаписьXML = Новый ЗаписьXML; | ||||||
|  | 	 | ||||||
|  | 	ЗаписьXML.УстановитьСтроку("UTF-8"); | ||||||
|  | 	ЗаписьXML.ЗаписатьОбъявлениеXML(); | ||||||
|  |      | ||||||
|  | 	ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения(); | ||||||
|  |     ЗаписьСообщения.НачатьЗапись(ЗаписьXML, УзелОбмена);					 | ||||||
|  |      | ||||||
|  | 	ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance"); | ||||||
|  | 	ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v8",  "http://v8.1c.ru/data"); | ||||||
|  |      | ||||||
|  | 	ТипДанныхУдаления = Тип("УдалениеОбъекта"); | ||||||
|  |      | ||||||
|  | 	ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(УзелОбмена, ЗаписьСообщения.НомерСообщения); | ||||||
|  | 	Пока ВыборкаИзменений.Следующий() Цикл | ||||||
|  | 		 | ||||||
|  | 		Данные = ВыборкаИзменений.Получить(); | ||||||
|  |          | ||||||
|  | 		// Если перенос данных не нужен, то, возможно, необходимо записать удаление данных | ||||||
|  | 		Если Не ОбменМобильныеПереопределяемый.НуженПереносДанных(Данные, УзелОбмена) Тогда | ||||||
|  | 			 | ||||||
|  | 			// Получаем значение с возможным удалением данных | ||||||
|  | 			УдалениеДанных(Данные);  | ||||||
|  |              | ||||||
|  | 		КонецЕсли;	 | ||||||
|  | 		 | ||||||
|  | 		// Записываем данные в сообщение | ||||||
|  | 		ОбменМобильныеПереопределяемый.ЗаписатьДанные(ЗаписьXML, Данные); | ||||||
|  |          | ||||||
|  |     КонецЦикла; | ||||||
|  |      | ||||||
|  | 	ЗаписьСообщения.ЗакончитьЗапись(); | ||||||
|  |      | ||||||
|  | 	Возврат Новый ХранилищеЗначения(ЗаписьXML.Закрыть(), Новый СжатиеДанных(9)); | ||||||
|  |      | ||||||
|  | КонецФункции | ||||||
|  |  | ||||||
|  | // Процедура вносит в информационную базу данные, которые присланы из узла "УзелОбмена"  | ||||||
|  | // | ||||||
|  | // Параметры: | ||||||
|  | //  УзелОбмена	– узел плана обмена "мобильные", с которым осуществляется обмен | ||||||
|  | //  ДанныеОбмена - пакет обмена полученный из узла УзелОбмена, помещен в ХранилищеЗначения | ||||||
|  | // | ||||||
|  | Процедура ПринятьПакетОбмена(УзелОбмена, ДанныеОбмена) Экспорт | ||||||
|  |      | ||||||
|  | 	ЧтениеXML = Новый ЧтениеXML; | ||||||
|  | 	ЧтениеXML.УстановитьСтроку(ДанныеОбмена.Получить()); | ||||||
|  |     ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения(); | ||||||
|  | 	ЧтениеСообщения.НачатьЧтение(ЧтениеXML); | ||||||
|  |     ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель,ЧтениеСообщения.НомерПринятого); | ||||||
|  |  | ||||||
|  |     НачатьТранзакцию(); | ||||||
|  |     Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл | ||||||
|  |          | ||||||
|  | 		Данные = ОбменМобильныеПереопределяемый.ПрочитатьДанные(ЧтениеXML); | ||||||
|  |          | ||||||
|  | 		Если Не Данные = Неопределено Тогда | ||||||
|  | 			 | ||||||
|  |             Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель; | ||||||
|  |             Данные.ОбменДанными.Загрузка = Истина; | ||||||
|  |              | ||||||
|  |             Данные.Записать(); | ||||||
|  |          | ||||||
|  |         КонецЕсли; | ||||||
|  |          | ||||||
|  |     КонецЦикла; | ||||||
|  |     ЗафиксироватьТранзакцию(); | ||||||
|  |      | ||||||
|  |     ЧтениеСообщения.ЗакончитьЧтение(); | ||||||
|  |     ЧтениеXML.Закрыть(); | ||||||
|  |      | ||||||
|  | КонецПроцедуры | ||||||
							
								
								
									
										302
									
								
								samples/1C Enterprise/Document.РасходТовара.ObjectModule.bsl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										302
									
								
								samples/1C Enterprise/Document.РасходТовара.ObjectModule.bsl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,302 @@ | |||||||
|  | ////////////////////////////////////////////////////////////////////////////////  | ||||||
|  |  | ||||||
|  | // ПРОЦЕДУРЫ И ФУНКЦИИ | ||||||
|  |  | ||||||
|  | // | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | // Формирование печатной формы документа | ||||||
|  |  | ||||||
|  | //  | ||||||
|  |  | ||||||
|  | // Параметры:  | ||||||
|  |  | ||||||
|  | //  Нет.  | ||||||
|  |  | ||||||
|  | //  | ||||||
|  |  | ||||||
|  | // Возвращаемое значение:  | ||||||
|  |  | ||||||
|  | //  ТабличныйДокумент - Сформированный табличный документ. | ||||||
|  |  | ||||||
|  | Процедура ПечатнаяФорма(ТабличныйДокумент) Экспорт | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	Макет = Документы.РасходТовара.ПолучитьМакет("МакетПечати"); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	// Заголовок | ||||||
|  |  | ||||||
|  | 	Область = Макет.ПолучитьОбласть("Заголовок"); | ||||||
|  |  | ||||||
|  | 	ТабличныйДокумент.Вывести(Область); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	// Шапка | ||||||
|  |  | ||||||
|  | 	Шапка = Макет.ПолучитьОбласть("Шапка"); | ||||||
|  |  | ||||||
|  | 	Шапка.Параметры.Заполнить(ЭтотОбъект); | ||||||
|  |  | ||||||
|  | 	ТабличныйДокумент.Вывести(Шапка); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	// Товары | ||||||
|  |  | ||||||
|  | 	Область = Макет.ПолучитьОбласть("ТоварыШапка"); | ||||||
|  |  | ||||||
|  | 	ТабличныйДокумент.Вывести(Область); | ||||||
|  |  | ||||||
|  | 	ОбластьТовары = Макет.ПолучитьОбласть("Товары"); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	Для каждого ТекСтрокаТовары Из Товары Цикл | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 		ОбластьТовары.Параметры.Заполнить(ТекСтрокаТовары); | ||||||
|  |  | ||||||
|  | 		ТабличныйДокумент.Вывести(ОбластьТовары); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	КонецЦикла; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | КонецПроцедуры | ||||||
|  |  | ||||||
|  |  | ||||||
|  | // Формирование печатной формы документа | ||||||
|  | //  | ||||||
|  | // Параметры:  | ||||||
|  | //  Нет.  | ||||||
|  | //  | ||||||
|  | // Возвращаемое значение:  | ||||||
|  | //  ТабличныйДокумент - Сформированный табличный документ. | ||||||
|  | Процедура Пересчитать() Экспорт | ||||||
|  |  | ||||||
|  | 	Для каждого ТекСтрокаТовары Из Товары Цикл | ||||||
|  |  | ||||||
|  | 		ТекСтрокаТовары.Сумма = ТекСтрокаТовары.Количество * ТекСтрокаТовары.Цена; | ||||||
|  |  | ||||||
|  | 	КонецЦикла; | ||||||
|  |  | ||||||
|  | КонецПроцедуры | ||||||
|  |  | ||||||
|  | //////////////////////////////////////////////////////////////////////////////// | ||||||
|  |  | ||||||
|  | // ОБРАБОТЧИКИ СОБЫТИЙ ОБЪЕКТА | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Процедура ОбработкаПроведения(Отказ, Режим) | ||||||
|  |  | ||||||
|  | 	// Формирование движений регистров накопления ТоварныеЗапасы и Продажи. | ||||||
|  | 	Движения.ТоварныеЗапасы.Записывать = Истина; | ||||||
|  | 	Движения.Продажи.Записывать = Истина; | ||||||
|  | 	Если Режим = РежимПроведенияДокумента.Оперативный Тогда | ||||||
|  | 		Движения.ТоварныеЗапасы.БлокироватьДляИзменения = Истина; | ||||||
|  | 	КонецЕсли;	 | ||||||
|  |  | ||||||
|  | 	// Создадим запрос, чтобы получать информацию об услугах | ||||||
|  | 	Запрос = Новый Запрос("ВЫБРАТЬ | ||||||
|  | 						  |    ТоварыВДокументе.НомерСтроки КАК НомерСтроки | ||||||
|  | 						  |ИЗ | ||||||
|  | 						  |    Документ.РасходТовара.Товары КАК ТоварыВДокументе | ||||||
|  | 						  |ГДЕ | ||||||
|  | 						  |    ТоварыВДокументе.Ссылка = &Ссылка | ||||||
|  | 						  |    И ТоварыВДокументе.Товар.Вид = ЗНАЧЕНИЕ(Перечисление.ВидыТоваров.Услуга)"); | ||||||
|  |  | ||||||
|  | 	Запрос.УстановитьПараметр("Ссылка", Ссылка); | ||||||
|  | 	РезультатУслуги = Запрос.Выполнить().Выгрузить(); | ||||||
|  | 	РезультатУслуги.Индексы.Добавить("НомерСтроки"); | ||||||
|  |  | ||||||
|  | 	Для каждого ТекСтрокаТовары Из Товары Цикл | ||||||
|  |  | ||||||
|  | 		Строка = РезультатУслуги.Найти(ТекСтрокаТовары.НомерСтроки, "НомерСтроки"); | ||||||
|  | 		Если Строка = Неопределено Тогда | ||||||
|  | 			 | ||||||
|  | 			// Не услуга | ||||||
|  | 			Движение = Движения.ТоварныеЗапасы.Добавить(); | ||||||
|  | 			Движение.ВидДвижения = ВидДвиженияНакопления.Расход; | ||||||
|  | 			Движение.Период = Дата; | ||||||
|  | 			Движение.Товар = ТекСтрокаТовары.Товар; | ||||||
|  | 			Движение.Склад = Склад; | ||||||
|  | 			Движение.Количество = ТекСтрокаТовары.Количество; | ||||||
|  |  | ||||||
|  | 		КонецЕсли; | ||||||
|  |  | ||||||
|  | 		Движение = Движения.Продажи.Добавить(); | ||||||
|  | 		Движение.Период = Дата; | ||||||
|  | 		Движение.Товар = ТекСтрокаТовары.Товар; | ||||||
|  | 		Движение.Покупатель = Покупатель; | ||||||
|  | 		Движение.Количество = ТекСтрокаТовары.Количество; | ||||||
|  | 		Движение.Сумма = ТекСтрокаТовары.Сумма; | ||||||
|  |  | ||||||
|  | 	КонецЦикла; | ||||||
|  |  | ||||||
|  | 	// Формирование движения регистра накопления Взаиморасчеты. | ||||||
|  | 	Движения.Взаиморасчеты.Записывать = Истина; | ||||||
|  | 	Движение = Движения.Взаиморасчеты.Добавить(); | ||||||
|  | 	Движение.ВидДвижения = ВидДвиженияНакопления.Расход; | ||||||
|  | 	Движение.Период = Дата; | ||||||
|  | 	Движение.Контрагент = Покупатель; | ||||||
|  | 	Движение.Валюта = Валюта; | ||||||
|  |  | ||||||
|  | 	Если Валюта.Пустая() Тогда | ||||||
|  | 		Движение.Сумма = Товары.Итог("Сумма"); | ||||||
|  | 	Иначе | ||||||
|  |  | ||||||
|  | 		Курс = РегистрыСведений.КурсыВалют.ПолучитьПоследнее(Дата, Новый Структура("Валюта", Валюта)).Курс; | ||||||
|  |  | ||||||
|  | 		Если Курс = 0 Тогда | ||||||
|  | 			Движение.Сумма = Товары.Итог("Сумма"); | ||||||
|  | 		Иначе | ||||||
|  | 			Движение.Сумма = Товары.Итог("Сумма") / Курс; | ||||||
|  | 		КонецЕсли; | ||||||
|  |  | ||||||
|  | 	КонецЕсли; | ||||||
|  |  | ||||||
|  | 	//Запишем движения | ||||||
|  | 	Движения.Записать(); | ||||||
|  | 	 | ||||||
|  | 	//Контроль остатков при оперативном проведении | ||||||
|  | 	Если Режим = РежимПроведенияДокумента.Оперативный Тогда | ||||||
|  | 		// Создадим запрос, чтобы контролировать остатки по товарам | ||||||
|  | 		Запрос = Новый Запрос("ВЫБРАТЬ | ||||||
|  | 							  |    ТоварыВДокументе.Товар КАК Товар, | ||||||
|  | 							  |    СУММА(ТоварыВДокументе.Количество) КАК Количество, | ||||||
|  | 							  |    МАКСИМУМ(ТоварыВДокументе.НомерСтроки) КАК НомерСтроки | ||||||
|  | 							  | | ||||||
|  | 							  |ПОМЕСТИТЬ ТребуетсяТовара | ||||||
|  | 							  | | ||||||
|  | 							  |ИЗ | ||||||
|  | 							  |    Документ.РасходТовара.Товары КАК ТоварыВДокументе | ||||||
|  | 							  | | ||||||
|  | 							  |ГДЕ | ||||||
|  | 							  |    ТоварыВДокументе.Ссылка = &Ссылка | ||||||
|  | 							  |    И ТоварыВДокументе.Товар.Вид = ЗНАЧЕНИЕ(Перечисление.ВидыТоваров.Товар) | ||||||
|  | 							  | | ||||||
|  | 							  |СГРУППИРОВАТЬ ПО | ||||||
|  | 							  |    ТоварыВДокументе.Товар | ||||||
|  | 							  | | ||||||
|  | 							  |ИНДЕКСИРОВАТЬ ПО | ||||||
|  | 							  |    Товар | ||||||
|  | 							  |; | ||||||
|  | 							  | | ||||||
|  | 							  |//////////////////////////////////////////////////////////////////////////////// | ||||||
|  | 							  |ВЫБРАТЬ | ||||||
|  | 							  |    ПРЕДСТАВЛЕНИЕ(ТребуетсяТовара.Товар) КАК ТоварПредставление, | ||||||
|  | 							  |    ВЫБОР | ||||||
|  | 							  |        КОГДА - ЕСТЬNULL(ТоварныеЗапасыОстатки.КоличествоОстаток, 0) > ТоварыВДокументе.Количество | ||||||
|  | 							  |            ТОГДА ТоварыВДокументе.Количество | ||||||
|  | 							  |        ИНАЧЕ - ЕСТЬNULL(ТоварныеЗапасыОстатки.КоличествоОстаток, 0) | ||||||
|  | 							  |    КОНЕЦ КАК Нехватка, | ||||||
|  | 							  |    ТоварыВДокументе.Количество - ВЫБОР | ||||||
|  | 							  |        КОГДА - ЕСТЬNULL(ТоварныеЗапасыОстатки.КоличествоОстаток, 0) > ТоварыВДокументе.Количество | ||||||
|  | 							  |            ТОГДА ТоварыВДокументе.Количество | ||||||
|  | 							  |        ИНАЧЕ - ЕСТЬNULL(ТоварныеЗапасыОстатки.КоличествоОстаток, 0) | ||||||
|  | 							  |    КОНЕЦ КАК МаксимальноеКоличество, | ||||||
|  | 							  |    ТребуетсяТовара.НомерСтроки КАК НомерСтроки | ||||||
|  | 							  | | ||||||
|  | 							  |ИЗ | ||||||
|  | 							  |    ТребуетсяТовара КАК ТребуетсяТовара | ||||||
|  | 							  |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварныеЗапасы.Остатки( | ||||||
|  | 							  |                , | ||||||
|  | 							  |                Товар В | ||||||
|  | 							  |                        (ВЫБРАТЬ | ||||||
|  | 							  |                            ТребуетсяТовара.Товар | ||||||
|  | 							  |                        ИЗ | ||||||
|  | 							  |                            ТребуетсяТовара) | ||||||
|  | 							  |                    И Склад = &Склад) КАК ТоварныеЗапасыОстатки | ||||||
|  | 							  |        ПО ТребуетсяТовара.Товар = ТоварныеЗапасыОстатки.Товар | ||||||
|  | 							  |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходТовара.Товары КАК ТоварыВДокументе | ||||||
|  | 							  |        ПО ТребуетсяТовара.Товар = ТоварыВДокументе.Товар | ||||||
|  | 							  |            И ТребуетсяТовара.НомерСтроки = ТоварыВДокументе.НомерСтроки | ||||||
|  | 							  | | ||||||
|  | 							  |ГДЕ | ||||||
|  | 							  |    ТоварыВДокументе.Ссылка = &Ссылка И | ||||||
|  | 							  |    0 > ЕСТЬNULL(ТоварныеЗапасыОстатки.КоличествоОстаток, 0) | ||||||
|  | 							  | | ||||||
|  | 							  |УПОРЯДОЧИТЬ ПО | ||||||
|  | 							  |    НомерСтроки"); | ||||||
|  |  | ||||||
|  | 		Запрос.УстановитьПараметр("Склад", Склад); | ||||||
|  | 		Запрос.УстановитьПараметр("Ссылка", Ссылка); | ||||||
|  | 		РезультатСНехваткой = Запрос.Выполнить(); | ||||||
|  |  | ||||||
|  | 		ВыборкаРезультатаСНехваткой = РезультатСНехваткой.Выбрать(); | ||||||
|  |  | ||||||
|  | 		// Выдадим ошибки для строк, в которых не хватает остатка | ||||||
|  | 		Пока ВыборкаРезультатаСНехваткой.Следующий() Цикл | ||||||
|  |  | ||||||
|  | 			Сообщение = Новый СообщениеПользователю(); | ||||||
|  | 			Сообщение.Текст = НСтр("ru = 'Не хватает '", "ru")  | ||||||
|  | 				+ ВыборкаРезультатаСНехваткой.Нехватка  | ||||||
|  | 				+ НСтр("ru = ' единиц товара'", "ru") + """"  | ||||||
|  | 				+ ВыборкаРезультатаСНехваткой.ТоварПредставление  | ||||||
|  | 				+ """"  | ||||||
|  | 				+ НСтр("ru = ' на складе'", "ru")  | ||||||
|  | 				+ """"  | ||||||
|  | 				+ Склад  | ||||||
|  | 				+ """."  | ||||||
|  | 				+ НСтр("ru = 'Максимальное количество: '", "ru")  | ||||||
|  | 				+ ВыборкаРезультатаСНехваткой.МаксимальноеКоличество  | ||||||
|  | 				+ "."; | ||||||
|  | 			Сообщение.Поле = НСтр("ru = 'Товары'", "ru")  | ||||||
|  | 				+ "["  | ||||||
|  | 				+ (ВыборкаРезультатаСНехваткой.НомерСтроки - 1)  | ||||||
|  | 				+ "]."  | ||||||
|  | 				+ НСтр("ru = 'Количество'", "ru"); | ||||||
|  | 			Сообщение.УстановитьДанные(ЭтотОбъект); | ||||||
|  | 			Сообщение.Сообщить(); | ||||||
|  | 			Отказ = Истина; | ||||||
|  |  | ||||||
|  | 		КонецЦикла; | ||||||
|  |  | ||||||
|  | 	КонецЕсли; | ||||||
|  | 	 | ||||||
|  | КонецПроцедуры | ||||||
|  |  | ||||||
|  | Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)		 | ||||||
|  | 	// Проверим заполненность поля "Покупатель" | ||||||
|  |  | ||||||
|  | 	Если Покупатель.Пустая() Тогда | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 		// Если поле Покупатель не заполнено, сообщим об этом пользователю | ||||||
|  |  | ||||||
|  | 		Сообщение = Новый СообщениеПользователю(); | ||||||
|  |  | ||||||
|  | 		Сообщение.Текст = НСтр("ru = 'Не указан Покупатель, для которого выписывается накладная!'", "ru"); | ||||||
|  |  | ||||||
|  | 		Сообщение.Поле = НСтр("ru = 'Покупатель'", "ru"); | ||||||
|  | 		Сообщение.УстановитьДанные(ЭтотОбъект); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 		Сообщение.Сообщить(); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 		// Сообщим платформе, что мы сами обработали проверку заполнения поля "Покупатель" | ||||||
|  |  | ||||||
|  | 		ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Покупатель")); | ||||||
|  |  | ||||||
|  | 		// Так как информация в документе не консистентна, то продолжать работу дальше смысла нет | ||||||
|  |  | ||||||
|  | 		Отказ = Истина; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	КонецЕсли; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	//Если склад не заполнен, то проверим есть ли в документе что-то кроме услуг | ||||||
|  | 	Если Склад.Пустая() И Товары.Количество() > 0 Тогда | ||||||
|  |  | ||||||
|  | 		// Создадим запрос, чтобы получать информацию об товарах | ||||||
|  | 		Запрос = Новый Запрос("ВЫБРАТЬ | ||||||
|  | 							  |    Количество(*) КАК Количество | ||||||
|  | 							  |ИЗ | ||||||
|  | 							  |    Справочник.Товары КАК Товары | ||||||
|  | 							  |ГДЕ | ||||||
|  | 							  |    Товары.Ссылка В (&ТоварыВДокументе) | ||||||
|  | 							  |    И Товары.Вид = ЗНАЧЕНИЕ(Перечисление.ВидыТоваров.Товар)"); | ||||||
|  |  | ||||||
							
								
								
									
										20
									
								
								samples/1C Enterprise/ci_before_script.os
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								samples/1C Enterprise/ci_before_script.os
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | |||||||
|  | Каталог = ОбъединитьПути(ТекущийКаталог(), "libs\oscript-library\src"); | ||||||
|  | Загрузчик_Оригинал_ИмяФайла = ОбъединитьПути(Каталог, "package-loader.os"); | ||||||
|  |  | ||||||
|  | Файлы = НайтиФайлы(Каталог, , Ложь); | ||||||
|  | Для Каждого ВыбФайл Из Файлы Цикл | ||||||
|  |  | ||||||
|  |     Если ВыбФайл.ЭтоФайл() Тогда | ||||||
|  |         Продолжить; | ||||||
|  |     КонецЕсли; | ||||||
|  |  | ||||||
|  |     Загрузчик_ИмяФайла = ОбъединитьПути(ВыбФайл.ПолноеИмя, "package-loader.os"); | ||||||
|  |     Загрузчик_Файл = Новый Файл(Загрузчик_ИмяФайла); | ||||||
|  |  | ||||||
|  |     Если Загрузчик_Файл.Существует() Тогда | ||||||
|  |         Продолжить; | ||||||
|  |     КонецЕсли; | ||||||
|  |  | ||||||
|  |     КопироватьФайл(Загрузчик_Оригинал_ИмяФайла, Загрузчик_ИмяФайла); | ||||||
|  |  | ||||||
|  | КонецЦикла; | ||||||
							
								
								
									
										42
									
								
								samples/1C Enterprise/test_canCompile.os
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								samples/1C Enterprise/test_canCompile.os
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | |||||||
|  | #Использовать "../libs/oscript-library/src/v8runner" | ||||||
|  | #Использовать "../libs/oscript-library/src/tempfiles" | ||||||
|  |  | ||||||
|  | Перем Лог; | ||||||
|  | Перем КодВозврата; | ||||||
|  |  | ||||||
|  | Процедура Инициализация() | ||||||
|  |  | ||||||
|  | 	Лог = Логирование.ПолучитьЛог("oscript.app.gitlab-test_CanCompile"); | ||||||
|  | 	КодВозврата = 0; | ||||||
|  |  | ||||||
|  | КонецПроцедуры | ||||||
|  |  | ||||||
|  | Процедура ВыполнитьТест() | ||||||
|  |  | ||||||
|  | 	Конфигуратор = Новый УправлениеКонфигуратором(); | ||||||
|  |  | ||||||
|  | 	ПараметрыЗапуска = Конфигуратор.ПолучитьПараметрыЗапуска(); | ||||||
|  | 	КомандаЗапуска = "/LoadConfigFromFiles ""%1"""; | ||||||
|  | 	КомандаЗапуска = СтрШаблон(КомандаЗапуска, ТекущийКаталог() + "\source\cf"); | ||||||
|  |  | ||||||
|  | 	Лог.Информация("Команда обновления конфигурации: " + КомандаЗапуска); | ||||||
|  |  | ||||||
|  | 	ПараметрыЗапуска.Добавить(КомандаЗапуска); | ||||||
|  |  | ||||||
|  | 	Попытка | ||||||
|  | 	    Конфигуратор.ВыполнитьКоманду(ПараметрыЗапуска); | ||||||
|  | 	Исключение | ||||||
|  |  | ||||||
|  | 	    Лог.Ошибка(Конфигуратор.ВыводКоманды()); | ||||||
|  | 	    КодВозврата = 1; | ||||||
|  |  | ||||||
|  | 	КонецПопытки; | ||||||
|  |  | ||||||
|  | 	УдалитьФайлы(Конфигуратор.ПутьКВременнойБазе()); | ||||||
|  |  | ||||||
|  | КонецПроцедуры | ||||||
|  |  | ||||||
|  | Инициализация(); | ||||||
|  | ВыполнитьТест(); | ||||||
|  |  | ||||||
|  | ЗавершитьРаботу(КодВозврата); | ||||||
							
								
								
									
										1
									
								
								vendor/grammars/atom-language-1c-bsl
									
									
									
									
										vendored
									
									
										Submodule
									
								
							
							
								
								
								
								
								
							
						
						
									
										1
									
								
								vendor/grammars/atom-language-1c-bsl
									
									
									
									
										vendored
									
									
										Submodule
									
								
							 Submodule vendor/grammars/atom-language-1c-bsl added at 787ea4fd3a
									
								
							
							
								
								
									
										25
									
								
								vendor/licenses/grammar/atom-language-1c-bsl.txt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								vendor/licenses/grammar/atom-language-1c-bsl.txt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | |||||||
|  | --- | ||||||
|  | type: grammar | ||||||
|  | name: atom-language-1c-bsl | ||||||
|  | license: mit | ||||||
|  | --- | ||||||
|  | Copyright © 2015 xDrivenDevelopment | ||||||
|  |  | ||||||
|  | Permission is hereby granted, free of charge, to any person obtaining | ||||||
|  | a copy of this software and associated documentation files (the | ||||||
|  | "Software"), to deal in the Software without restriction, including | ||||||
|  | without limitation the rights to use, copy, modify, merge, publish, | ||||||
|  | distribute, sublicense, and/or sell copies of the Software, and to | ||||||
|  | permit persons to whom the Software is furnished to do so, subject to | ||||||
|  | the following conditions: | ||||||
|  |  | ||||||
|  | The above copyright notice and this permission notice shall be | ||||||
|  | included in all copies or substantial portions of the Software. | ||||||
|  |  | ||||||
|  | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||||||
|  | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||||||
|  | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||||||
|  | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | ||||||
|  | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | ||||||
|  | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | ||||||
|  | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||||
		Reference in New Issue
	
	Block a user